ইউএমএল বর্গ ডায়াগ্রাম স্বরলিপি: সমিতি, সমষ্টি এবং রচনা মধ্যে পার্থক্য


39

আমি ইউএমএল বর্গ চিত্রের কিছু স্বীকৃতি সম্পর্কে বিভ্রান্ত হয়ে পড়েছি।

এখানে চিত্র বর্ণনা লিখুন

খুব নিশ্চিত যে আমি জানি অ্যাসোসিয়েশন বলতে কী বোঝায়। দুটি শ্রেণীর উদাহরণের মধ্যে যে কোনও সম্পর্ক, যেখানে একটি শ্রেণির উদাহরণের কাজটি সম্পাদনের জন্য দ্বিতীয় শ্রেণীর উদাহরণ সম্পর্কে জানতে হবে - এটি একটি সম্পর্ক সম্পর্ক। অ্যাসোসিয়েশন প্রায়শই ক্লাস এ এর ​​অর্থ ক্লাস বি এর উদাহরণের সাথে একটি ক্ষেত্রের (ক্ষেত্র) রেফারেন্স থাকে An

যাইহোক, একত্রিকরণ এবং রচনা তীরগুলি কী বোঝে তা বুঝতে আমার সমস্যা হচ্ছে । আমার বিভ্রান্তির একটি অংশ এই স্বীকৃতিগুলির বিভিন্ন সংজ্ঞা সংঘটিত হওয়ার কারণে ঘটেছিল।

সমষ্টি স্বীকৃতির দুটি সংজ্ঞা :

সংজ্ঞা 1: শ্রেণি A এর উদাহরণ বি শ্রেণীর উদাহরণগুলির উদাহরণ সংগ্রহ করে (যেমন একটি তালিকা, অ্যারে, যাই হোক না কেন) দুটি শ্রেণীর মধ্যে একটি সমষ্টিগত স্বরলিপি উপযুক্ত ।

সংজ্ঞা 2: শ্রেণি A এর কোনও উদাহরণ ক্লাস বি এর উদাহরণের সাথে একটি রেফারেন্স ধরে রাখলে এবং খ উদাহরণটি উদাহরণের লাইফসাইকেলের উপর নির্ভরশীল যদি দুটি শ্রেণীর মধ্যে একটি সমষ্টি লিঙ্ক উপযুক্ত অর্থ: যখন ক্লাস এ এর ​​উদাহরণ মুছে ফেলা হবে, তখন ক্লাস বি এর উদাহরণটি বি শ্রেণীর উদাহরণের সাথে পুরোপুরি ক্লাস এ এর ​​উদাহরণ সহ অন্তর্ভুক্ত থাকবে, ক্লাস এ এর ​​উদাহরণটির বিপরীতে কেবলমাত্র ক্লাস এ এর ​​উদাহরণটির সাথে একটি রেফারেন্সের মালিক হবে বি ক্লাস (যা নিয়মিত সমিতি)।

কম্পোজিশন স্বরলিপিটির অর্থ কী এবং এটি কীভাবে একীকরণের স্বরলিপি থেকে পৃথক হয় তা সম্পর্কে, আমি নিশ্চিত নই।

দয়া করে সংজ্ঞাগুলি স্পষ্ট করুন এবং আমাকে বুঝতে সহায়তা করুন। কংক্রিট উদাহরণ স্বাগত হবে।


সংজ্ঞা 2 সংকলনের চেয়ে সংমিশ্রণের সংজ্ঞাটির মতো আরও শোনায়। সংজ্ঞা 1 টি বেশ ঠিক আছে।
jbx

উত্তর:


32

তিনটি লিঙ্ক অ্যাসোসিয়েশন, সমষ্টি এবং সংমিশ্রণ দুটি শ্রেণীর একে অপরের সাথে কীভাবে সম্পর্কিত তার উপর এক ধরণের স্কেল তৈরি করে।

স্কেলের এক প্রান্তে, অ্যাসোসিয়েশন রয়েছে, যেখানে দুটি শ্রেণির অবজেক্টগুলি একে অপর সম্পর্কে জানতে পারে, তবে তারা আজীবন একে অপরকে প্রভাবিত করে না। অবজেক্টগুলি স্বতন্ত্রভাবে অস্তিত্ব থাকতে পারে এবং কোন শ্রেণি A অবজেক্টটি জানতে পারে যে সময়ের সাথে বি শ্রেণীর অবজেক্টগুলি পৃথক হতে পারে।

স্কেলের অন্য প্রান্তে, রচনা রয়েছে। সংমিশ্রণ একটি অংশকে প্রতিনিধিত্ব করে - পুরো সম্পর্ক যেমন শ্রেণি বি শ্রেণীর একটি অবিচ্ছেদ্য অঙ্গ, এই সম্পর্কটি সাধারণত ব্যবহৃত হয় যদি ক্লাস এ এর ​​অবজেক্টগুলি ক্লাস বি অবজেক্ট ছাড়া যুক্তিযুক্তভাবে উপস্থিত না হতে পারে।

সমষ্টিগত সম্পর্কটি এই দু'টি প্রান্তের মধ্যেই কোথাও রয়েছে, তবে কেউই ঠিক কোথায় একমত বলে মনে হয় না, তাই অগ্রিগেশন বলতে কী বোঝায় তার কোনও সর্বজনগ্রাহ্য সম্মত সংজ্ঞাও নেই। সেই অর্থে, আপনি যে দুটি সংজ্ঞা পেয়েছেন তা সঠিক এবং আপনি যদি 10 জনকে জিজ্ঞাসা করেন, তবে আপনি 11 টি পৃথক সংজ্ঞা পাবেন বলে ঝুঁকিপূর্ণ।


1
আপনার উত্তরের জন্য ধন্যবাদ. এখানে আমি কীভাবে জিনিসগুলি বুঝি, দয়া করে বলুন এটি যদি যুক্তিসঙ্গত সংজ্ঞা হয়। 1- অ্যাসোসিয়েশন যখনই কোনও আইনের কার্যকারিতা সম্পাদনের জন্য কোনও বি-অবজেক্ট সম্পর্কে জানতে প্রয়োজন। 2- একত্রিতকরণ এবং রচনা উভয়ই 'মালিকানা' সম্পর্ককে সংজ্ঞায়িত করে - শ্রেণীর উদাহরণ একটি বর্গের একটি ধারণার ধারণাগুলির মালিক, তবে খ উদাহরণটির জীবনকাল এ দৃষ্টান্তের জীবদ্দশায় স্বতন্ত্র। উদাহরণস্বরূপ, কর্মচারীদের সাথে একটি বিভাগ। বিভাগটি 'মালিকানাধীন' instance কর্মচারী উদাহরণ, তবে এটি বিভাগ ছাড়া বাঁচতে থাকবে। রচনাটি সমষ্টিটির মতো, তবে
আভিভ কোহন

1
খ উদাহরণস্বরূপ জীবদ্দশায় একটি উদাহরণের জীবনকাল নির্ভর। একটি শক্তিশালী 'মালিকানা' সম্পর্ক। উদাহরণস্বরূপ: একটি গাড়ী এবং চাকা। গাড়িটি 'সম্পূর্ণরূপে' চাকা করে। চাকা দৃষ্টান্তটি এতে থাকা গাড়ীর উদাহরণ ছাড়াই বাঁচতে থাকবে না। এটি কি যুক্তিসঙ্গত পার্থক্য?
আভিভ কোহন

@ প্রোগ: হ্যাঁ, এটি একটি যুক্তিসঙ্গত সংজ্ঞা। কেবল মনে রাখবেন যে অন্যরা সেই সংজ্ঞাটি ভাগ না করতে পারে এবং আপনার তাদের একত্রিত করার ব্যবহারটি ব্যাখ্যা করার প্রয়োজন হতে পারে।
বার্ট ভ্যান ইনজেন শেহেনো

আপনি কী বলবেন সমষ্টি স্বীকৃতিটির সবচেয়ে সাধারণ সংজ্ঞা? আমি যে সংজ্ঞাটি ব্যবহার করছি? 'সংজ্ঞার সংকলন আছে'? অন্যকিছু?
আভিভ কোহন

নীচে ওএমজি স্ট্যান্ডার্ডের উল্লেখটি শিক্ষণীয়। সমিতি এবং রচনা মোটামুটি সোজা। সমষ্টি হ'ল। অনুশীলনে, আমি দেখতে পেয়েছি যে পরীক্ষার 'অংশ' ভালভাবে কাজ করে ('মালিকানা' এটি সম্পর্কে ভাবার একটি সর্বোত্তম উপায়)। কোনও ব্যক্তি কোনও ক্লাবের অংশ হতে পারে, সুতরাং একটি ক্লাব লোককে একত্রিত করে (এটি তাদের নিজস্ব নয়)। ক্লাবটি ধ্বংস হয়ে গেলে লোকের অস্তিত্ব টিকে থাকে।
হুলিয়াক্স

10

সংমিশ্রণটি যখন একটি object Aথাকে object Bএবং এটি object Aতৈরির জন্যও দায়ী object B

রচনা সম্পর্ক

আমাদের ক্লাস এ আছে যা বি ক্লাস দ্বারা ব্যবহৃত হবে

final class A
{
}

রচনাটি দেখতে কেমন হতে পারে তার একাধিক বিকল্প রয়েছে।

সরাসরি সূচনা রচনা:

final class B
{
    private $a = new A();
}

নির্মাতা সূচনা রচনা

final class B
{
    private $a;

    public function __construct()
    {
        $this->a = new A();
    }
}

অলস সূচনা রচনা

final class B
{
    private $a = null;

    public function useA()
    {
        if ($this->a === null) {
            $this->a = new A();
        }

        /* Use $this->a */
    }
}

আপনি দেখুন এটি ক্লাস Aএবং এর মধ্যে একটি ঘনিষ্ঠ সম্পর্ক তৈরি করে B। ক্লাস Bকেবল ছাড়া থাকতে পারে না A। এটি নির্ভরতা ইনজেকশন নীতির একটি বিশাল লঙ্ঘন , যা বলে:

নির্ভরতা হ'ল এমন একটি বস্তু যা ব্যবহার করা যায় (একটি পরিষেবা)। একটি ইনজেকশন হ'ল নির্ভরশীল অবজেক্টের (ক্লায়েন্ট) যে এটি ব্যবহার করবে তার উপর নির্ভরতা পাস করা। পরিষেবাটি ক্লায়েন্টের রাজ্যের অংশ হিসাবে তৈরি করা হয়েছে। ক্লায়েন্টের কাছে পরিষেবাটি পাস করা, কোনও ক্লায়েন্টকে পরিষেবাটি নির্মাণ বা সন্ধানের অনুমতি দেওয়ার পরিবর্তে প্যাটার্নের মৌলিক প্রয়োজনীয়তা।

রচনা কখনও কখনও বোঝায়, যেমন new DateTimeপিএইচপি বা new std::vector<int>সি ++ এ কল করা। তবে প্রায়শই না করা, এটি একটি সতর্কতা, আপনার কোড ডিজাইনটি ভুল।

একটি ক্ষেত্রে, যেখানে class Aক্যাশিংয়ের জন্য ব্যবহৃত বিশেষ জিনিস class Bহবে , এর প্রয়োগটি ব্যবহার করে সর্বদা ক্যাশে class Aহবে এবং এটি গতিশীলভাবে পরিবর্তন করার কোনও নিয়ন্ত্রণ আপনার কাছে থাকবে না, যা খারাপ।

এছাড়াও, আপনি যদি অলস সূচনা রচনাটি ব্যবহার করেন , যার অর্থ আপনার একটি কাজ থাকবে object B, যাকে useA()পদ্ধতি বলা হয় এবং এর সৃষ্টি object Aব্যর্থ হয়, object Bতবে হঠাৎ আপনার অকেজো।


অন্যদিকে, সমষ্টিটি সম্পর্কের একটি উপায়, যা ডিআই নীতির অনুসরণ করে । object Bব্যবহার করার প্রয়োজন object Aহয়, তাহলে আপনি ইতিমধ্যে তৈরি ইনস্ট্যান্সের পাস করা উচিত object Aকরতে object B, এবং সৃষ্টির উচিত object Aব্যর্থ কিছুই প্রথম স্থানে হস্তান্তর করা যাবে।

সংক্ষেপে, সমষ্টি হ'ল নির্ভরতা ইনজেকশন নীতিটির জন্য ইউএমএল প্রতিনিধিত্ব , এটি কনস্ট্রাক্টর ইনজেকশন, সেটার ইঞ্জেকশন বা জনসাধারণের সম্পত্তি ইনজেকশন হতে পারে।

এগুলি সমস্ত সমষ্টি

সবচেয়ে কড়া, কনস্ট্রাক্টর ইনজেকশন ( object Bব্যতীত উপস্থিত থাকতে পারে না object A)।

final class B
{
    private $a;

    public function __construct(A $a)
    {
        $this->a = $a;
    }
}

লুজার (আপনি object Aভিতরে ব্যবহার করতে পারেন বা নাও করতে পারেন object B, তবে আপনি যদি এটি করেন তবে আপনার সম্ভবত এটি প্রথমে সেট করা উচিত)।

সেটার মাধ্যমে:

final class B
{
    private $a;

    public function setA(A $a)
    {
        $this->a = $a;
    }
}

সর্বজনীন সম্পত্তি মাধ্যমে:

final class B
{
    public $a;
}

কম্পোজিশনের ওপরে সমষ্টিটির ব্যবহারকে ন্যায়সঙ্গত করার সত্যিই দুর্দান্ত উপায় নেই, আপনি যদি ব্যবহার করছেন সমস্ত ক্লাসের কংক্রিট বাস্তবায়ন হয় তবে আপনি যখন ইন্টারফেসগুলি ইনজেকশন দেওয়া শুরু করেন বা সি ++ বিমূর্ত শ্রেণির ক্ষেত্রে হঠাৎ করে একত্রিত হওয়ার একমাত্র উপায় হবে তোমার চুক্তি পূরণ কর


1
কোড উদাহরণগুলি দেখে সত্যিই সহায়তা করে! কোড ব্যতীত ইংরেজিতে ব্যাখ্যাগুলি এতই অস্পষ্ট এবং বিষয়গত বলে মনে হয়।
নিকো বেলিক

1

এছাড়াও বর্তমান ইউএমএল স্ট্যান্ডার্ডের একটি অংশ:

11.5.4 সমিতি - শব্দার্থবিজ্ঞান - স্বরলিপি

[...] বাইনারি অ্যাসোসিয়েশনের সমাপ্তি = সমষ্টি কাইন্ড :: ভাগ বা সমষ্টি = সমষ্টি কাইন্ড :: সংমিশ্রণের এক প্রান্ত থাকতে পারে। যখন এক প্রান্তের সমষ্টি হয় = সমষ্টি কাইন্ড :: ভাগ করে একটি ফাঁকা হীরা সংযুক্তি = সমষ্টি কাইন্ড :: ভাগ করে চিহ্নিত প্রান্তের বিপরীতে অ্যাসোসিয়েশন লাইনের শেষে টার্মিনাল অলংকরণ হিসাবে যুক্ত হয়। অ্যাসোসিয়েশনগুলির জন্য হীরা উল্লেখযোগ্যভাবে ছোট হতে হবে। সমষ্টি সহ একটি সমিতি = সমষ্টি কাইন্ড :: একইভাবে সংযুক্ত প্রান্তে একই প্রান্তে একটি হীরা থাকে তবে হীরাটি ভরাট করা থেকে পৃথক [[…]

9.5.4 শ্রেণিবদ্ধকরণ - বৈশিষ্ট্য - স্বরলিপি

[…] কখনও কখনও কোনও সম্পত্তি পরিস্থিতিগুলির মডেল হিসাবে ব্যবহৃত হয় যেখানে এক নজির উদাহরণগুলির একটি সেটকে একত্রিত করার জন্য ব্যবহৃত হয়; এটিকে সমষ্টি বলে। এই জাতীয় পরিস্থিতিতে প্রতিনিধিত্ব করতে, কোনও সম্পত্তির একত্রিত সম্পত্তি রয়েছে, যেমন একত্রিতকরণ টাইপ; পুরো গোষ্ঠীর প্রতিনিধিত্বকারী উদাহরণটি সম্পত্তির মালিকের দ্বারা শ্রেণিবদ্ধ করা হয়েছে এবং গোষ্ঠীভুক্ত ব্যক্তিদের উপস্থাপনের উদাহরণগুলি সম্পত্তির ধরণের দ্বারা শ্রেণিবদ্ধ করা হয়েছে। একত্রিতকরণকাইন্ডটি নিম্নোক্ত আক্ষরিক মানগুলির সাথে একটি গণনা:

  • কোনটি নয় : ইঙ্গিত দেয় যে সম্পত্তির কোনও সমষ্টিগত শব্দার্থবিজ্ঞান নেই।
  • ভাগ করা : ইঙ্গিত করে যে সম্পত্তিটি সমষ্টিগত শব্দার্থতত্ত্বগুলি ভাগ করেছে। ভাগ করা সমষ্টিগুলির যথার্থ শব্দার্থবিজ্ঞান অ্যাপ্লিকেশন অঞ্চল এবং মডেলারের দ্বারা পরিবর্তিত হয়।
  • কম্পোজিট : চিহ্নিত দিয়েছিল যে বৈশিষ্ট্য compositely একীকৃত, অর্থাত্, যৌগিক বস্তু অস্তিত্ব ও স্থিরীকৃত বস্তুর সঞ্চয়ের জন্য দায়িত্ব আছে (11.2.3 অংশ সংজ্ঞা দেখুন)। যৌগিক সমষ্টি একত্রিতকরণের একটি শক্তিশালী রূপ যা একটি সময়ে কমপক্ষে একটি যৌগিক বস্তুর অন্তর্ভুক্ত অংশ অংশের প্রয়োজন। যদি কোনও যৌগিক বস্তু মুছে ফেলা হয় তবে এর অংশ অংশের সমস্ত উদাহরণ যা বস্তুগুলি এটি দিয়ে মুছে ফেলা হয়।

[...]


0

আমি ইতিমধ্যে স্ট্যাকওভারফ্লোতে একটি উত্তর পোস্ট করেছি ।

মূলত, একত্রিতকরণ একটি সাধারণ সংখ্যার চেয়ে শক্তিশালী তবে একত্রিত বস্তুগুলি একটি সাধারণ সমিতি হিসাবে একে অপরকে ছাড়া "জীবনযাপন" করতে পারে।

একটি সংমিশ্রণের চেয়ে আরও বেশি শক্তিশালী একটি সংঘবদ্ধ কারণ একত্রিত শ্রেণি অন্য শ্রেণি দ্বারা একত্রিত করা যায় না। এটির "জীবন" ধারকটির উপর নির্ভর করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.