সমিতি, সংহতকরণ এবং রচনার মধ্যে পার্থক্য কী? প্রয়োগের ক্ষেত্রে দয়া করে ব্যাখ্যা করুন।
সমিতি, সংহতকরণ এবং রচনার মধ্যে পার্থক্য কী? প্রয়োগের ক্ষেত্রে দয়া করে ব্যাখ্যা করুন।
উত্তর:
দুটি বস্তুর জন্য, Foo
এবং Bar
সম্পর্কগুলি সংজ্ঞায়িত করা যায়
সমিতি - একটি জিনিসের সাথে আমার সম্পর্ক রয়েছে। Foo
ব্যবহারসমূহBar
public class Foo {
void Baz(Bar bar) {
}
};
রচনা - আমার একটি সামগ্রীর মালিক এবং এর আজীবন জন্য আমি দায়বদ্ধ। যখন Foo
মারা যায়, তাই হয়Bar
public class Foo {
private Bar bar = new Bar();
}
সমষ্টি - আমার একটি অবজেক্ট রয়েছে যা আমি অন্য কারও কাছ থেকে ধার নিয়েছি। যখন Foo
মারা যায় Bar
বাস করতে পারে।
public class Foo {
private Bar bar;
Foo(Bar bar) {
this.bar = bar;
}
}
Bar
অবজেক্ট লাইভ থাকতে পারে।
আমি জানি এই প্রশ্নটিকে সি # হিসাবে ট্যাগ করা হয়েছে তবে ধারণাগুলি এখানে পুনর্নির্দেশের মতো বেশ সাধারণ প্রশ্ন । সুতরাং আমি এখানে আমার দৃষ্টিভঙ্গি সরবরাহ করতে যাচ্ছি (জাভা দৃষ্টিকোণ থেকে কিছুটা পক্ষপাতিত্ব যেখানে আমি আরও আরামদায়ক) am
যখন আমরা অবজেক্ট-ওরিয়েন্টেড প্রকৃতির কথা ভাবি আমরা সর্বদা অবজেক্টস, ক্লাস (অবজেক্ট ব্লুপ্রিন্ট) এবং তাদের মধ্যে সম্পর্কের কথা চিন্তা করি। অবজেক্টগুলি সম্পর্কিত হয় এবং পদ্ধতিগুলির মাধ্যমে একে অপরের সাথে যোগাযোগ করে। অন্য কথায় এক শ্রেণীর অবজেক্ট অন্য শ্রেণীর অবজেক্টের দ্বারা সরবরাহিত পরিষেবা / পদ্ধতি ব্যবহার করতে পারে। এই ধরণের সম্পর্ককে সংযুক্তি হিসাবে অভিহিত করা হয় । ।
সংহতকরণ এবং সংমিশ্রণ হ'ল সংঘের সাবটেক্ট অর্থ তারা সঙ্ঘের নির্দিষ্ট ক্ষেত্রে।
বিভ্রান্ত?
সংমিশ্রণের উদাহরণ : একটি গাড়ি এবং ইঞ্জিনের উদাহরণ বিবেচনা করুন যা সেই গাড়ির সাথে খুব নির্দিষ্ট (অর্থ এটি অন্য কোনও গাড়ীতে ব্যবহার করা যাবে না)। গাড়ি এবং স্পেসিফিক এঞ্জাইন শ্রেণীর মধ্যে এই ধরণের সম্পর্কের নামকে সংমিশ্রণ বলা হয়। স্পেসিফিকইঞ্জাইন ক্লাসের অবজেক্ট ছাড়া কার শ্রেণীর একটি অবজেক্টের অস্তিত্ব থাকতে পারে না এবং স্পেসিফিকইঞ্জিনের অবজেক্টের কার ক্লাস ছাড়া কোনও তাত্পর্য নেই। সহজ কথায় বলতে গেলে কার ক্লাস স্পেসিফিকইঙ্গাইন ক্লাসের একমাত্র "মালিক" "
সমষ্টি উদাহরণ : এখন ক্লাস কার এবং ক্লাস হুইল বিবেচনা করুন । কারের কাজ করতে হুইল অবজেক্ট দরকার। অর্থ কার অবজেক্ট হুইল অবজেক্টের মালিক তবে আমরা বলতে পারি কার ওজেক্ট ছাড়া হুইল অবজেক্টটির কোনও তাত্পর্য নেই। এটি খুব ভাল একটি বাইক, ট্রাক বা বিভিন্ন গাড়ী অবজেক্টে ব্যবহার করা যেতে পারে।
এটি সংক্ষেপে -
সংক্ষেপে সংক্ষেপে বলা যায় যে কোনও শ্রেণি অন্য শ্রেণীর সরবরাহিত ক্রিয়াকলাপগুলি যখন ব্যবহার করে তখন প্রতিনিধিত্ব করতে ব্যবহৃত হয় খুব সাধারণ শব্দ। আমরা বলি যে এটির রচনা যদি কোনও পিতামাত্ত শ্রেণীর অবজেক্ট অন্য শিশু শ্রেণীর অবজেক্টের মালিক হয় এবং সেই শিশু শ্রেণীর অবজেক্টটি প্যারেন্ট ক্লাস অবজেক্ট ব্যতীত অর্থপূর্ণভাবে উপস্থিত না হতে পারে। যদি এটি করতে পারে তবে এটিকে এগ্রিগেশন বলে।
আরও বিশদ এখানে। আমি http://opensourceforgeeks.blogspot.in এর লেখক এবং আরও প্রসঙ্গে প্রাসঙ্গিক পোস্টে উপরের একটি লিঙ্ক যুক্ত করেছি।
সমিতি হ'ল সম্পর্কের ধারণাটি সাধারণীকরণ। এটি রচনা এবং সমষ্টি উভয়ই অন্তর্ভুক্ত।
রচনা ( মিশ্রণ ) হ'ল একক ইউনিটে সরল অবজেক্টস বা ডেটা ধরণের মোড়কের উপায় । রচনাগুলি অনেকগুলি বুনিয়াদি ডেটা স্ট্রাকচারের সমালোচনাপূর্ণ বিল্ডিং ব্লক
সমষ্টি ( সংগ্রহ ) সাধারণ রচনা থেকে পৃথক যে এটি মালিকানা বোঝায় না। সংমিশ্রণে, যখন মালিকানাধীন বস্তুটি নষ্ট হয়ে যায়, তেমনি থাকা বস্তুগুলিও থাকে। সমষ্টিগতভাবে, এটি অগত্যা সত্য নয়।
উভয়ই বস্তুর মধ্যে সম্পর্ককে বোঝায় এবং কেবল তাদের শক্তিতে পৃথক।
পার্থক্যটি মনে রাখার কৌশল: এ - একটি গ্রেগেশন এবং ও ডব্লিউএন - সি ও এমপোসিটোইন রয়েছে
এখন নিম্নলিখিত চিত্র পর্যবেক্ষণ করা যাক
সাদৃশ্য:
রচনা : নিম্নলিখিত চিত্রটি চিত্রের সংমিশ্রণ অর্থাৎ পৃথক চিত্র ব্যবহার করে একটি চিত্র তৈরি করে।
সমষ্টি : একক স্থানে চিত্রের সংগ্রহ
উদাহরণস্বরূপ, একটি বিশ্ববিদ্যালয় বিভিন্ন বিভাগের মালিক, এবং প্রতিটি বিভাগে বেশ কিছু অধ্যাপক থাকে। বিশ্ববিদ্যালয়টি বন্ধ হলে বিভাগগুলি আর বিদ্যমান থাকবে না, তবে departments বিভাগগুলিতে অধ্যাপকগণের অস্তিত্ব থাকবে। সুতরাং, কোনও বিশ্ববিদ্যালয়কে বিভাগগুলির একটি রচনা হিসাবে দেখা যেতে পারে, যেখানে বিভাগগুলিতে অধ্যাপকদের সমষ্টি রয়েছে of এছাড়াও একজন অধ্যাপক একাধিক বিভাগে কাজ করতে পারতেন, তবে একটি বিভাগ একাধিক বিশ্ববিদ্যালয়ের অংশ নিতে পারেননি।
নির্ভরতা (তথ্যসূত্র) এর
অর্থ দুটি বস্তুর মধ্যে ধারণাগত লিঙ্ক নেই is উদাহরণস্বরূপ এনরোলমেন্ট সার্ভিস অবজেক্ট শিক্ষার্থী ও কোর্স অবজেক্টের (পদ্ধতির পরামিতি বা রিটার্নের ধরণ হিসাবে) উল্লেখ করে
public class EnrollmentService {
public void enroll(Student s, Course c){}
}
অ্যাসোসিয়েশন (হ্যাঁ-এ) এর
অর্থ প্রায়শই সবসময় বস্তুর মধ্যে লিঙ্ক থাকে (তারা জড়িত)। অর্ডার বস্তুর টি কাস্টমার বস্তুর
public class Order {
private Customer customer
}
সমষ্টি (has-a + সম্পূর্ণ অংশ)
বিশেষ ধরনের সংযোগ যেখানে দুটি বস্তুর মধ্যে পুরো অংশের সম্পর্ক রয়েছে। তারা যদিও একে অপরকে ছাড়া বাঁচতে পারে।
public class PlayList{
private List<Song> songs;
}
দ্রষ্টব্য: কৌশলগত অংশটি হ'ল সাধারণ সমিতি থেকে সমষ্টিকে আলাদা করা। সত্য, আমি মনে করি এটি বিভিন্ন ব্যাখ্যার জন্য উন্মুক্ত।
রচনা (একটি-সম্পূর্ণ + অংশ + মালিকানা রয়েছে)
বিশেষ ধরণের সমষ্টি। একটি Apartment
কিছু Room
এস এর সমন্বয়ে গঠিত । একটি Room
ছাড়া একটি বিদ্যমান থাকতে পারে না Apartment
। যখন কোনও অ্যাপার্টমেন্ট মোছা হয়, সমস্ত সম্পর্কিত কক্ষগুলিও মুছে ফেলা হয়।
public class Apartment{
private Room bedroom;
public Apartment() {
bedroom = new Room();
}
}
কম্বোবজেক্টে রবার্ট মার্টিনের একটি পোস্ট থেকে :
সমিতি অন্য উদাহরণগুলিতে একটি বার্তা প্রেরণের এক উদাহরণের দক্ষতার প্রতিনিধিত্ব করে। এটি সাধারণত একটি পয়েন্টার বা রেফারেন্স উদাহরণ ভেরিয়েবলের সাথে প্রয়োগ করা হয়, যদিও এটি কোনও পদ্ধতি যুক্তি বা স্থানীয় ভেরিয়েবলের তৈরি হিসাবে প্রয়োগ করা যেতে পারে।
//[Example:]
//|A|----------->|B|
class A
{
private:
B* itsB;
};
সমষ্টি [...] সাধারণত সম্পূর্ণ / অংশের সম্পর্ক। এটি হ'ল ব্যতিক্রমের সাথে সংযুক্তির মতো যা উদাহরণগুলির মধ্যে চক্রীয় একীকরণের সম্পর্ক থাকতে পারে না (অর্থাত কোনও অংশে এর সম্পূর্ণটি থাকতে পারে না)।
//[Example:]
//|Node|<>-------->|Node|
class Node
{
private:
vector<Node*> itsNodes;
};
এটি একীকরণের অর্থ হ'ল নোডের উদাহরণগুলি একটি চক্র গঠন করতে পারে না। সুতরাং, এটি নোডের একটি বৃক্ষ নোডের গ্রাফ নয়।
রচনা [...] হুবহু সমাগমের মতো, ব্যতীত 'অংশ' এর আজীবন 'পুরো' দ্বারা নিয়ন্ত্রিত হয়। এই নিয়ন্ত্রণ সরাসরি বা ট্রানজিটিভ হতে পারে। অর্থাত্, 'সম্পূর্ণ' 'অংশ' তৈরি বা ধ্বংস করার জন্য প্রত্যক্ষ দায়িত্ব নিতে পারে, বা এটি ইতিমধ্যে তৈরি অংশটিকে গ্রহণ করতে পারে এবং পরে এটি অন্য কোনও কিছুতে দেয় যা এটির জন্য দায়বদ্ধ করে।
//[Example:]
//|Car|<#>-------->|Carburetor|
class Car
{
public:
virtual ~Car() {delete itsCarb;}
private:
Carburetor* itsCarb
};
যেমনটি অন্যরা বলেছেন, একটি সংস্থা হ'ল বস্তুর মধ্যে একটি সম্পর্ক, একত্রিকরণ এবং রচনাটি হ'ল সংযুক্তির ধরণ।
বাস্তবায়নের দৃষ্টিকোণ থেকে, রেফারেন্সের দ্বারা শ্রেণি সদস্য থাকার দ্বারা একটি সমষ্টি প্রাপ্ত হয় । উদাহরণস্বরূপ, ক্লাস এ যদি শ্রেণি বি এর একটি বস্তুকে একত্রিত করে, আপনি এর মতো কিছু পাবেন (সি ++ এ):
class A {
B & element;
// or B * element;
};
সমষ্টিটির শব্দার্থক শব্দটি হ'ল যখন কোনও বস্তু A বিনষ্ট হয়, তখন যে বি বস্তুটি এটি সংরক্ষণ করে তা এখনও বিদ্যমান থাকবে। রচনাটি ব্যবহার করার সময়, আপনার আরও দৃ relationship় সম্পর্ক হয়, সাধারণত সদস্যকে মূল্য দ্বারা সঞ্চয় করে :
class A {
B element;
};
এখানে যখন কোনও অজেক্টটি ধ্বংস হয়ে যায়, তখন এতে থাকা বি বস্তুটিও ধ্বংস হয়ে যায়। এটি অর্জনের সবচেয়ে সহজ উপায় হ'ল মেম্বারকে মান দ্বারা স্টোরেজ করা, তবে আপনি কিছু স্মার্ট পয়েন্টার ব্যবহার করতে পারেন, বা সদস্যটিকে ডেস্ট্রাক্টরে মুছতে পারেন:
class A {
std::auto_ptr<B> element;
};
class A {
B * element;
~A() {
delete B;
}
};
গুরুত্বপূর্ণ বিষয়টি হ'ল কোনও সংমিশ্রণে কনটেইনার অবজেক্টটি এতে থাকা একটির মালিক , যেখানে সমষ্টিগতভাবে এটি এর উল্লেখ করে।
তিনটি সম্পর্ক ধারণা সমিতি , সংহতকরণ এবং রচনাগুলির মধ্যে পার্থক্য সম্পর্কে কতটা বিভ্রান্তি রয়েছে তা অবাক করা ।
লক্ষ করুন যে সংশ্লেষ এবং সংশ্লেষ পদগুলি সি ++ সম্প্রদায়ে ব্যবহৃত হয়েছে সম্ভবত কিছু সময়ের জন্য তাদের বিশেষ সংস্থার সংজ্ঞা হিসাবে সংজ্ঞায়িত করা হয়েছে ইউএমএল ক্লাস রেখাচিত্র হবে।
মূল সমস্যাটি বিস্তৃত এবং চলমান ভুল বোঝাবুঝি (এমনকি বিশেষজ্ঞ সফ্টওয়্যার বিকাশকারীদের মধ্যেও) যে রচনার ধারণাটি পুরো এবং এর অংশগুলির মধ্যে একটি জীবনচক্র নির্ভরতা বোঝায় যে অংশগুলি পুরো ব্যতীত অস্তিত্ব রাখতে পারে না, এই সত্যটি উপেক্ষা করেও রয়েছে যে অংশ-অংশীদারিত্বহীন অংশগুলির সাথে অংশ-পুরো-সংস্থার ক্ষেত্রে যেখানে অংশগুলি আলাদা করা যায় এবং পুরোটির ধ্বংস থেকে বাঁচতে পারে।
আমি যতদূর দেখতে পাচ্ছি, এই বিভ্রান্তির দুটি শিকড় রয়েছে:
সি ++ মানুষদের সম্প্রদায়ের মধ্যে শব্দ "অ্যাগ্রিগেশন" একটি বর্গ অন্য স্বাধীন ক্লাসের বস্তু উল্লেখ জন্য একটি বৈশিষ্ট্য সংজ্ঞায়িত অর্থে ব্যবহৃত হয় (দেখুন, যেমন, [1]), যার মধ্যে জ্ঞান সমিতি ইউএমএল ক্লাস রেখাচিত্র হবে। "কম্পোজিশন" শব্দটি ক্লাসগুলির জন্য ব্যবহৃত হত যা তাদের বস্তুর জন্য উপাদানগুলির সংজ্ঞা দেয় যেমন যৌগিক বস্তুর ধ্বংসের পরে এই উপাদানগুলিও ধ্বংস হয়ে যাচ্ছে।
ইউএমএল ক্লাস ডায়াগ্রামে, "একীকরণ" এবং "রচনা" উভয়কেই অংশ-পুরো সম্পর্কের প্রতিনিধিত্বকারী সংস্থার বিশেষ মামলা হিসাবে সংজ্ঞায়িত করা হয়েছে (যা দীর্ঘদিন দর্শনে আলোচিত হয়েছে)। তাদের সংজ্ঞাগুলিতে, "একত্রিতকরণ" এবং "রচনা" এর মধ্যে পার্থক্যটি যদি তথ্যের উপর ভিত্তি করে হয় যদি এটি দুটি বা ততোধিক স্তরের মধ্যে ভাগ ভাগ করে দেয়। তারা "রচনাগুলি" অংশীবিহীন (একচেটিয়া) অংশগুলি হিসাবে সংজ্ঞায়িত করে, যখন "সমষ্টি" তাদের অংশগুলি ভাগ করতে পারে। এছাড়াও তারা নিম্নলিখিতগুলির মতো কিছু বলে: খুব প্রায়ই, তবে সব ক্ষেত্রেই নয়, রচনাগুলি পুরো এবং এর অংশগুলির মধ্যে একটি জীবনচক্র নির্ভরতা নিয়ে আসে যে অংশগুলি পুরো ব্যতীত অস্তিত্ব থাকতে পারে না।
সুতরাং, ইউএমএল "সংহতকরণ" এবং "রচনা" শব্দটিকে সঠিক পরিপ্রেক্ষিতে (পার্ট-পুরো সম্পর্কের) রেখেছেন, তারা বিকাশকারীদের অন্তর্নিহিতকে ক্যাপচার করে পরিষ্কার এবং দ্ব্যর্থহীন পদ্ধতিতে এগুলি সংজ্ঞায়িত করতে পারেনি। যাইহোক, এটি আশ্চর্যজনক নয় কারণ এই সম্পর্কগুলি থাকতে পারে এমন অনেকগুলি পৃথক বৈশিষ্ট্য (এবং প্রয়োগের ঘনত্ব) রয়েছে এবং বিকাশকারীরা কীভাবে এগুলি বাস্তবায়ন করতে পারে তাতে সম্মত হন না।
আরও দেখুন আমার বর্ধিত উত্তর এর এপ্রিল 2009 তাই প্রশ্ন নীচে তালিকাভুক্ত করা হয়।
এবং যে সম্পত্তিটি সি ++ সম্প্রদায়ের ওওপি অবজেক্টগুলির মধ্যে "রচনা" সংজ্ঞায়িত করার জন্য ধারনা করা হয়েছিল (এবং এই বিশ্বাসটি এখনও বহুলভাবে ধারণ করে): দুটি সম্পর্কিত বিষয় (যৌগিক এবং এর উপাদান) এর মধ্যে রান-টাইম জীবনচক্র নির্ভরতা, "রচনা" এর জন্য সত্যই বৈশিষ্ট্যযুক্ত নয় কারণ অন্যান্য ধরণের সংঘের ক্ষেত্রেও রেফারেনশিয়াল অখণ্ডতার কারণে আমাদের এই ধরনের নির্ভরতা থাকতে পারে।
উদাহরণস্বরূপ, "রচনা" এর জন্য নিম্নলিখিত কোড প্যাটার্নটি একটি এসও উত্তরে প্রস্তাবিত হয়েছিল :
final class Car {
private final Engine engine;
Car(EngineSpecs specs) {
engine = new Engine(specs);
}
void move() {
engine.work();
}
}
উত্তরদাতা দাবি করেছেন যে এটি "রচনা" এর বৈশিষ্ট্যযুক্ত যে অন্য কোনও শ্রেণি উপাদানটি উল্লেখ করতে বা জানতে পারে না। যাইহোক, "কম্পোজিশন" এর সমস্ত সম্ভাব্য ক্ষেত্রে এটি অবশ্যই সত্য নয়। বিশেষত, গাড়ির ইঞ্জিনের ক্ষেত্রে, গাড়ী প্রস্তুতকারী, সম্ভবত অন্য শ্রেণীর সাহায্যে প্রয়োগ করা হয়েছে, যখনই কোনও সমস্যা দেখা দিয়েছে তখনই গাড়ির মালিকের সাথে যোগাযোগ করতে সক্ষম হওয়ার জন্য ইঞ্জিনটি রেফারেন্স করতে হতে পারে।
[1] http://www.learncpp.com/cpp-tutorial/103-aggregation/
পরিশিষ্ট - স্ট্যাকওভারফ্লোতে সমষ্টি বনাম রচনা সম্পর্কিত বারবার জিজ্ঞাসিত প্রশ্নের অসম্পূর্ণ তালিকা
[ এপ্রিল ২০০৯ ]
সমন্বয় বনাম রচনা [মূলত মতামত ভিত্তিক বন্ধ]
[ এপ্রিল ২০০৯ ]
রচনা এবং সমিতি সম্পর্কের মধ্যে পার্থক্য কী?
[ মে ২০০৯ ]
সমিতি, সংহতকরণ এবং রচনার মধ্যে পার্থক্য
[ মে ২০০৯ ]
রচনা এবং সমষ্টিগুলির মধ্যে পার্থক্য কী? [সদৃশ]
[ অক্টোবর ২০০৯ ]
সমষ্টি, রচনা এবং নির্ভরতার মধ্যে পার্থক্য কী? [সদৃশ হিসাবে চিহ্নিত]
[ নভেম্বর ২০১০ ]
সমিতি বনাম সমষ্টি [সদৃশ হিসাবে চিহ্নিত]
[আগস্ট ২০১২ ]
জাভাতে একত্রিতকরণ এবং রচনাগুলির মধ্যে বাস্তবায়নের পার্থক্য
[ ফেব্রুয়ারী 2015 ]
ইউএমএল - সমিতি বা সমষ্টি (সাধারণ কোড স্নিপেটস)
সংঘ
অ্যাসোসিয়েশন দুটি শ্রেণীর মধ্যে সম্পর্কের প্রতিনিধিত্ব করে tএটি একমুখী (একমুখী) বা দ্বি দিকনির্দেশক (দ্বিপথ) হতে পারে
উদাহরণ স্বরূপ:
গ্রাহক আদেশ দেয়
এ বিয়ের সাথে বিবাহিত
এ-এর সাথে বি বিয়ে হয়েছে
মোট পরিমাণ
সমষ্টি এক প্রকারের সমিতি specific তবে নির্দিষ্ট বৈশিষ্ট্য সহ একত্রিতকরণ g এক বৃহত্তর "পুরো" শ্রেণীর মধ্যে সম্পর্ক হ'ল এক বা একাধিক ছোট "অংশ" শ্রেণি থাকে, বিপরীতভাবে, একটি ছোট "অংশ" শ্রেণি "সম্পূর্ণ" বৃহত্তর শ্রেণীর একটি অংশ ।
উদাহরণ স্বরূপ:
ক্লাবের সদস্য রয়েছে
একটি ক্লাব ("পুরো") বেশ কয়েকটি ক্লাব সদস্য ("অংশগুলি") নিয়ে গঠিত Member সদস্যের ক্লাবের বাইরের জীবন থাকে। যদি ক্লাবটি ("পুরো") মারা যায়, তবে সদস্যরা ("অংশগুলি") এটির সাথে মরে না। কারণ সদস্য একাধিক ক্লাবের ("পুরো") অন্তর্ভুক্ত থাকতে পারে।
গঠন
এটি একত্রিত করার একটি শক্তিশালী রূপ "" সম্পূর্ণ "এটির" অংশগুলি "তৈরি বা ধ্বংসের জন্য দায়বদ্ধ
উদাহরণ স্বরূপ:
একটি বিদ্যালয়ের বিভাগ রয়েছে
এক্ষেত্রে স্কুল ("পুরো") মারা যাচ্ছিল, বিভাগ ("অংশগুলি") এটির সাথে মারা হত। কারণ প্রতিটি অংশ কেবল একটি "সম্পূর্ণ" এর সাথে সম্পর্কিত হতে পারে।
class Club(){ _member = new Member }
বা রেফারেন্স হিসাবে পাস করতে পারিclass Club(){ addMember(Member member) { this._member = member } }
আমাদের কেন একাধিকবার সম্পর্ক রেখা ব্যবহার করে বিরক্ত করা উচিত তা বোঝা গুরুত্বপূর্ণ। সর্বাধিক সুস্পষ্ট কারণ হ'ল ক্লাসের মধ্যে পিতা-মাতার সম্পর্কের বর্ণনা দেওয়া (যখন পিতামাতার মুছে ফেলা হয় তার সন্তানের ফলস্বরূপ সমস্ত মুছে ফেলা হয়), তবে আরও অনাবিলভাবে আমরা দৃশ্যমানতার উপর নিবিড়ভাবে বিধিনিষেধ আরোপের জন্য সহজ সমিতি এবং রচনার মধ্যে পার্থক্য করতে চাই and সম্পর্কিত ক্লাসে পরিবর্তনের প্রচার, এটি সিস্টেমের জটিলতা বোঝার এবং হ্রাস করতে গুরুত্বপূর্ণ ভূমিকা পালন করে ।
সংঘ
শ্রেণীর মধ্যে স্থিতিশীল সম্পর্কের বর্ণনা দেওয়ার সর্বাধিক বিমূর্ত উপায় হল অ্যাসোসিয়েশন লিঙ্কটি ব্যবহার করা, যা কেবলমাত্র লিখিতভাবে বলে থাকে যে দুটি ধরণের বা আরও বেশি শ্রেণির মধ্যে একটি লিঙ্ক বা নির্ভরতা রয়েছে।
দুর্বল সমিতি
ক্লাসএ এর সাথে ক্লাসবি উদাহরণের প্যারামিটার অন্তর্ভুক্ত রয়েছে বা ক্লাসবি-র রিটার্নের উদাহরণ অন্তর্ভুক্ত রয়েছে তা দেখানোর জন্য ক্লাসএ ক্লাসবিতে লিঙ্কযুক্ত থাকতে পারে।
শক্তিশালী সমিতি
শ্রেণিবর্গ উদাহরণস্বরূপ একটি রেফারেন্স ধারণ করে তা দেখানোর জন্য ক্লাসএটিকে ক্লাসবিতেও যুক্ত করা যেতে পারে।
সমষ্টি (অংশীদারি সমিতি)
ক্লাসএ (পুরো) এবং ক্লাসবি (অংশ) এর মধ্যে অংশবিশেষের সম্পর্ক রয়েছে এমন ক্ষেত্রে, আমরা আরও নির্দিষ্ট হতে পারি এবং অ্যাসোসিয়েশন লিঙ্কের পরিবর্তে সংহত লিঙ্কটি ব্যবহার করতে পারি, হাইলাইট করে যে ক্লাসবি অ্যাপ্লিকেশনের অন্যান্য শ্রেণি দ্বারাও একত্রিত হতে পারে ( সুতরাং সমষ্টিটি শেয়ার্ড অ্যাসোসিয়েশন নামে পরিচিত)।
এটি লক্ষণীয় যে জোটটি লিঙ্কটি কোনওভাবে ক্লাসএর ক্লাসবি'র মালিকানাধীন নয় বা পিতামাতার-সন্তানের সম্পর্ক (যখন পিতামাতার মুছে ফেলা হচ্ছে তার সন্তানের সমস্ত ফলস্বরূপ মুছে ফেলা হচ্ছে) এই দুজনের মধ্যে নেই state আসলে, বেশ বিপরীত! সমষ্টি লিঙ্কটি সাধারণত এই বিষয়টিকে চাপ দেওয়ার জন্য ব্যবহৃত হত যে ক্লাসএ ক্লাসবি-এর একচেটিয়া ধারক নয়, যেমন বাস্তবে ক্লাসিবের আর একটি ধারক রয়েছে।
সমষ্টি বনাম অ্যাসোসিয়েশন অ্যাসোসিয়েশন লিঙ্কটি প্রতিটি পরিস্থিতিতেই সংযোগ লিঙ্ককে প্রতিস্থাপন করতে পারে, যখন একীকরণ ক্লাসগুলির মধ্যে কেবল একটি 'দুর্বল লিঙ্ক' রয়েছে এমন পরিস্থিতিতে সংস্থাকে প্রতিস্থাপন করতে পারে না, যেমন ক্লাসএতে মেথড / গুলি রয়েছে যেখানে ক্লাসবি'র প্যারামিটার থাকে তবে ক্লাসএ নেই ক্লাসবি উদাহরণটি রেফারেন্স ধরে রাখুন।
মার্টিন ফোলার পরামর্শ দেন যে সংহত লিঙ্কটি মোটেও ব্যবহার করা উচিত নয় কারণ এর কোনও অতিরিক্ত মূল্য নেই এবং এটি ধারাবাহিকতাকে ব্যাহত করে, জিম রাম্বউগকে "এটিকে মডেলিং প্লাসবো হিসাবে ভাবুন" উদ্ধৃত করে।
রচনা (অংশবিহীন সমিতি)
আমাদের আরও সুনির্দিষ্ট হওয়া উচিত এবং ক্লাসএ এবং ক্লাসবি-র মধ্যে পার্ট-পার্টিশন সম্পর্কের পাশাপাশি দু'জনের মধ্যে দৃ depend় জীবনচক্র নির্ভরতা থাকা উচিত, যার অর্থ যখন ক্লাসএ মোছা হয় তখন ক্লাসবিও ফলস্বরূপ মুছে ফেলা হয় in
সংমিশ্রণ লিঙ্কটি দেখায় যে কোনও শ্রেণীর (ধারক, পুরো) অন্যান্য শ্রেণি / অংশ (অংশ) এর উপর একচেটিয়া মালিকানা রয়েছে, যার অর্থ ধারক বস্তু এবং তার অংশগুলি পিতামাতার / সন্তানের সম্পর্ক গঠন করে।
সংঘবদ্ধতা এবং একত্রকরণের বিপরীতে, রচনা সম্পর্কটি ব্যবহার করার সময়, রচনা শ্রেণিটি সম্মিলিত শ্রেণীর কোনও রিটার্ন টাইপ বা প্যারামিটার ধরণের হিসাবে উপস্থিত হতে পারে না। সুতরাং, রচিত শ্রেণিতে পরিবর্তনগুলি সিস্টেমের বাকী অংশে প্রচার করতে পারে না। ফলস্বরূপ, রচনাটির ব্যবহার সিস্টেম বৃদ্ধি করার সাথে সাথে জটিলতা বৃদ্ধিকে সীমাবদ্ধ করে।
সিস্টেম জটিলতা পরিমাপ
সিস্টেমের জটিলতা কেবলমাত্র একটি ইউএমএল শ্রেণীর চিত্রটি দেখে এবং সমিতি, সংহতকরণ এবং রচনা সম্পর্কের লাইনগুলি মূল্যায়নের মাধ্যমে পরিমাপ করা যেতে পারে। জটিলতা পরিমাপের উপায় হ'ল নির্দিষ্ট শ্রেণি পরিবর্তন করে কত শ্রেণি প্রভাবিত হতে পারে তা নির্ধারণ করা। যদি ক্লাস এ ক্লাস বিটিকে উদ্ভাসিত করে, তবে ক্লাস এ ব্যবহার করে যে কোনও প্রদত্ত শ্রেণি তাত্ত্বিকভাবে ক্লাস বিতে পরিবর্তন দ্বারা প্রভাবিত হতে পারে সিস্টেমের প্রতিটি শ্রেণির জন্য সম্ভাব্য প্রভাবিত শ্রেণীর সংখ্যার যোগফল মোট সিস্টেমের জটিলতা।
আপনি আমার ব্লগে আরও পড়তে পারেন: http://aviadezra.blogspot.com/2009/05/uml-association-aggregation-composition.html
class Person() { private hand = new Hand }
। স্লিপ অগ্রিগেশন ব্যক্তি class Person() { private sleep = new Sleep }
ঘুমের মধ্যে "নতুন" কীটি কী বৈধ? বা একত্রিতকরণের কারণে আমি কি এটি রেফারেন্স হিসাবে পাস করব? class Person() { private Sleep _sleep; public addSleep(Sleep sleep) { this._sleep = sleep} }
রচনা (যদি আপনি "সম্পূর্ণ", "অংশ" অপসারণ করেন তবে স্বয়ংক্রিয়ভাবে সরানো হয় - "মালিকানা")
নতুন শ্রেণীর ভিতরে আপনার বিদ্যমান শ্রেণীর অবজেক্ট তৈরি করুন। এটিকে কম্পোজিশন বলা হয় কারণ নতুন ক্লাসটি বিদ্যমান ক্লাসের অবজেক্টের সমন্বয়ে গঠিত।
সাধারণত সাধারণ সদস্য ভেরিয়েবল ব্যবহার করুন।
পয়েন্টার মানগুলি ব্যবহার করতে পারে যদি সংমিশ্রণ শ্রেণি স্বয়ংক্রিয়ভাবে বরাদ্দ / ডিফলোকেশন সাবক্লাসগুলির সৃষ্টি / ধ্বংসের জন্য দায়ী করে।
সি ++ তে রচনা
#include <iostream>
using namespace std;
/********************** Engine Class ******************/
class Engine
{
int nEngineNumber;
public:
Engine(int nEngineNo);
~Engine(void);
};
Engine::Engine(int nEngineNo)
{
cout<<" Engine :: Constructor " <<endl;
}
Engine::~Engine(void)
{
cout<<" Engine :: Destructor " <<endl;
}
/********************** Car Class ******************/
class Car
{
int nCarColorNumber;
int nCarModelNumber;
Engine objEngine;
public:
Car (int, int,int);
~Car(void);
};
Car::Car(int nModelNo,int nColorNo, int nEngineNo):
nCarModelNumber(nModelNo),nCarColorNumber(nColorNo),objEngine(nEngineNo)
{
cout<<" Car :: Constructor " <<endl;
}
Car::~Car(void)
{
cout<<" Car :: Destructor " <<endl;
Car
Engine
Figure 1 : Composition
}
/********************** Bus Class ******************/
class Bus
{
int nBusColorNumber;
int nBusModelNumber;
Engine* ptrEngine;
public:
Bus(int,int,int);
~Bus(void);
};
Bus::Bus(int nModelNo,int nColorNo, int nEngineNo):
nBusModelNumber(nModelNo),nBusColorNumber(nColorNo)
{
ptrEngine = new Engine(nEngineNo);
cout<<" Bus :: Constructor " <<endl;
}
Bus::~Bus(void)
{
cout<<" Bus :: Destructor " <<endl;
delete ptrEngine;
}
/********************** Main Function ******************/
int main()
{
freopen ("InstallationDump.Log", "w", stdout);
cout<<"--------------- Start Of Program --------------------"<<endl;
// Composition using simple Engine in a car object
{
cout<<"------------- Inside Car Block ------------------"<<endl;
Car objCar (1, 2,3);
}
cout<<"------------- Out of Car Block ------------------"<<endl;
// Composition using pointer of Engine in a Bus object
{
cout<<"------------- Inside Bus Block ------------------"<<endl;
Bus objBus(11, 22,33);
}
cout<<"------------- Out of Bus Block ------------------"<<endl;
cout<<"--------------- End Of Program --------------------"<<endl;
fclose (stdout);
}
আউটপুট
--------------- Start Of Program --------------------
------------- Inside Car Block ------------------
Engine :: Constructor
Car :: Constructor
Car :: Destructor
Engine :: Destructor
------------- Out of Car Block ------------------
------------- Inside Bus Block ------------------
Engine :: Constructor
Bus :: Constructor
Bus :: Destructor
Engine :: Destructor
------------- Out of Bus Block ------------------
--------------- End Of Program --------------------
সমষ্টি (আপনি "সম্পূর্ণ" সরিয়ে ফেললে, "অংশ" বিদ্যমান থাকতে পারে - "মালিকানা নেই")
সমষ্টি একটি নির্দিষ্ট ধরণের রচনা যা জটিল বস্তু এবং সাবোবজেক্টগুলির মধ্যে কোনও মালিকানা বোঝানো হয় না। যখন একটি সমষ্টি ধ্বংস হয়, সাবোবজেক্টগুলি ধ্বংস হয় না।
সাধারণত পয়েন্টার ভেরিয়েবল / রেফারেন্স ভেরিয়েবল ব্যবহার করুন যা সামগ্রীর শ্রেণির ক্ষেত্রের বাইরে বসবাস করে এমন কোনও বস্তুর দিকে নির্দেশ করে
সামগ্রীর শ্রেণীর ক্ষেত্রের বাইরে থাকা কোনও বস্তুর প্রতি নির্দেশিত রেফারেন্স মানগুলি ব্যবহার করতে পারেন
সাবক্লাস তৈরি / ধ্বংস করার জন্য দায়বদ্ধ নয়
সি ++ এ সমষ্টি কোড
#include <iostream>
#include <string>
using namespace std;
/********************** Teacher Class ******************/
class Teacher
{
private:
string m_strName;
public:
Teacher(string strName);
~Teacher(void);
string GetName();
};
Teacher::Teacher(string strName) : m_strName(strName)
{
cout<<" Teacher :: Constructor --- Teacher Name :: "<<m_strName<<endl;
}
Teacher::~Teacher(void)
{
cout<<" Teacher :: Destructor --- Teacher Name :: "<<m_strName<<endl;
}
string Teacher::GetName()
{
return m_strName;
}
/********************** Department Class ******************/
class Department
{
private:
Teacher *m_pcTeacher;
Teacher& m_refTeacher;
public:
Department(Teacher *pcTeacher, Teacher& objTeacher);
~Department(void);
};
Department::Department(Teacher *pcTeacher, Teacher& objTeacher)
: m_pcTeacher(pcTeacher), m_refTeacher(objTeacher)
{
cout<<" Department :: Constructor " <<endl;
}
Department::~Department(void)
{
cout<<" Department :: Destructor " <<endl;
}
/********************** Main Function ******************/
int main()
{
freopen ("InstallationDump.Log", "w", stdout);
cout<<"--------------- Start Of Program --------------------"<<endl;
{
// Create a teacher outside the scope of the Department
Teacher objTeacher("Reference Teacher");
Teacher *pTeacher = new Teacher("Pointer Teacher"); // create a teacher
{
cout<<"------------- Inside Block ------------------"<<endl;
// Create a department and use the constructor parameter to pass the teacher to it.
Department cDept(pTeacher,objTeacher);
Department
Teacher
Figure 2: Aggregation
} // cDept goes out of scope here and is destroyed
cout<<"------------- Out of Block ------------------"<<endl;
// pTeacher still exists here because cDept did not destroy it
delete pTeacher;
}
cout<<"--------------- End Of Program --------------------"<<endl;
fclose (stdout);
}
আউটপুট
--------------- Start Of Program --------------------
Teacher :: Constructor --- Teacher Name :: Reference Teacher
Teacher :: Constructor --- Teacher Name :: Pointer Teacher
------------- Inside Block ------------------
Department :: Constructor
Department :: Destructor
------------- Out of Block ------------------
Teacher :: Destructor --- Teacher Name :: Pointer Teacher
Teacher :: Destructor --- Teacher Name :: Reference Teacher
--------------- End Of Program --------------------
এই উত্তরগুলির সাথে সমস্যা হ'ল এগুলি হ'ল গল্প: তারা ব্যাখ্যা করে যে সংহতকরণ এবং রচনাটি সংঘবদ্ধতার রূপ, তবে তারা বলে না যে কোনও সংস্থার পক্ষে এই দুটির একটিও হওয়া সম্ভব কিনা if
আমি এসও এবং কয়েকটি ইউএমএল ডক্সের অনেকগুলি পোস্টের সংক্ষিপ্ত পাঠের উপর ভিত্তি করে সংগ্রহ করি যে ক্লাস অ্যাসোসিয়েশনের 4 টি প্রধান কংক্রিট ফর্ম রয়েছে:
যখন দুটি সত্তার মধ্যে একটি সম্পর্ক এইগুলির মধ্যে একটি নয়, তখন কেবল শব্দটির জেনেরিক অর্থে এটি "একটি সমিতি" বলা যেতে পারে এবং আরও অন্যান্য উপায়ের (নোট, স্টেরিওটাইপ ইত্যাদি) বর্ণিত।
আমার অনুমান যে "জেনেরিক সমিতি" মূলত দুটি পরিস্থিতিতে ব্যবহার করা যেতে পারে:
আমি মনে করি এই লিঙ্কটি আপনার বাড়ির কাজ করবে: http://ootips.org/uml-hasa.html
শর্তগুলি বুঝতে আমার প্রথম প্রোগ্রামিংয়ের দিনগুলিতে একটি উদাহরণ মনে আছে:
আপনার যদি একটি 'দাবা বোর্ড' অবজেক্ট থাকে যাতে এতে 'বক্স' অবজেক্ট থাকে যা কম্পোজিশনযুক্ত কারণ যদি 'দাবা বোর্ড' মুছে ফেলা হয় তবে বাক্সগুলির আর অস্তিত্বের কোনও কারণ নেই।
আপনার যদি একটি 'বর্গক্ষেত্র' অবজেক্ট থাকে যার একটি 'রঙ' অবজেক্ট থাকে এবং বর্গক্ষেত্রটি মুছে যায় তবে 'রঙ' অবজেক্টটি এখনও বিদ্যমান থাকতে পারে, এটি সমষ্টি
উভয়ই সমিতি , মূল পার্থক্য ধারণাগত
গঠন : এখানে আপনি একবার যখন কোনও বস্তু (স্কুল) ধ্বংস করেন, তখন অন্য একটি বস্তু (শ্রেণিকক্ষ) যা এর সাথে আবদ্ধ হয় তাও ধ্বংস হয়ে যায়। দু'জনেরই স্বাধীনভাবে অস্তিত্ব থাকতে পারে না।
সমষ্টি : এটি উপরোক্ত ( Composition
) সংস্থার ঠিক বিপরীতদিকে সাজানো যেখানে আপনি একবার কোনও বস্তুকে ( Company
) মেরে ফেলেন , তখন অন্য বস্তু ( Employees
) যার সাথে আবদ্ধ থাকে তা নিজে থেকেই উপস্থিত থাকতে পারে।
এসোসিয়েশন ।
সংমিশ্রণ এবং সংহতকরণ দুটি ধরনের সংঘবদ্ধতা।
Simple rules:
A "owns" B = Composition : B has no meaning or purpose in the system
without A
A "uses" B = Aggregation : B exists independently (conceptually) from A
A "belongs/Have" B= Association; And B exists just have a relation
Example 1:
A Company is an aggregation of Employees.
A Company is a composition of Accounts. When a Company ceases to do
business its Accounts cease to exist but its People continue to exist.
Employees have association relationship with each other.
Example 2: (very simplified)
A Text Editor owns a Buffer (composition). A Text Editor uses a File
(aggregation). When the Text Editor is closed,
the Buffer is destroyed but the File itself is not destroyed.
খুব সাধারণ বাক্যে:
সমষ্টি এবং রচনাটি মেলামেশার সাবসেট ts
এ বি ব্যবহার করে -> এটি একটি সমষ্টি
একটি প্রয়োজন বি -> রচনা।
এখানে আরও পড়ুন ।
আমি তিনটি শর্তাবলী কীভাবে প্রয়োগ করা হয় তা চিত্রিত করতে চাই। ActiveRecord দুটি মডেল একটি মধ্যে সম্পর্ক কোন প্রকার কল association
। অ্যাক্টিভেকর্ড সম্পর্কিত ডকুমেন্টেশন বা নিবন্ধগুলি পড়ার সময়, একটি খুব প্রায়ই শর্তাবলী composition
এবং খুঁজে পাবেন না aggregation
। অ্যাসোসিয়েশন ক্লাসের শরীরে অ্যাসোসিয়েশন ক্লাস ম্যাক্রোগগুলির মধ্যে একটি যুক্ত করে তৈরি করা হয়। এই ম্যাক্রো মধ্যে কয়েকটি হল belongs_to
, has_one
, has_many
ইত্যাদি ..
আমরা সেট আপ করার চান composition
বা aggregation
, আমরা যোগ করতে হবে belongs_to
মালিকানাধীন মডেল (শিশু এছাড়াও বলা হয়) এবং has_one
বা has_many
মালিক মডেল (পিতা বা মাতা এছাড়াও বলা হয়) জন্য। আমরা শিশু মডেলটিতে কলটিতে যে বিকল্পগুলি সেট করি তার উপরে আমরা সেটআপ করি composition
বা aggregation
নির্ভর করি depends belongs_to
রেল 5 এর আগে, belongs_to
কোনও বিকল্প ছাড়াই সেটআপ করা একটি aggregation
বাচ্চাদের পিতামাতাকে ছাড়া থাকতে পারে। যদি আমরা একটি চাইতাম composition
, আমাদের বিকল্পটি যুক্ত করে স্পষ্ট করে এটি প্রকাশ করা দরকার required: true
:
class Room < ActiveRecord::Base
belongs_to :house, required: true
end
5 কারাগারে এটি পরিবর্তন করা হয়েছিল। এখন, belongs_to
অ্যাসোসিয়েশনের ঘোষণাটি একটি composition
ডিফল্টরূপে তৈরি করে, সন্তানের পিতা-মাতা ছাড়া থাকতে পারে না। সুতরাং উপরের উদাহরণটি আবার লিখিত হতে পারে:
class Room < ApplicationRecord
belongs_to :house
end
আমরা যদি পিতা-মাতা ব্যতীত সন্তানের বস্তুর অস্তিত্বের অনুমতি দিতে চাই, তবে বিকল্পের মাধ্যমে আমাদের এটি স্পষ্টভাবে ঘোষণা করা দরকার optional
class Product < ApplicationRecord
belongs_to :category, optional: true
end
থেকে: রেমো এইচ।
আমরা অ্যাসোসিয়েশনকে সেই সম্পর্কগুলি বলে থাকি যাদের বস্তুর একটি স্বতন্ত্র জীবনচক্র থাকে যেখানে বস্তুর মালিকানা নেই। আসুন এক শিক্ষক এবং একজন শিক্ষার্থীর উদাহরণ দেখুন। একাধিক শিক্ষার্থী একক শিক্ষকের সাথে যুক্ত হতে পারে এবং একক শিক্ষার্থী একাধিক শিক্ষকের সাথে যুক্ত হতে পারে তবে উভয়েরই স্বতন্ত্র জীবনচক্র থাকে (উভয়ই স্বাধীনভাবে তৈরি করতে এবং মুছতে পারে)। সুতরাং, যখন কোনও শিক্ষক স্কুল ছেড়ে চলে যায়, তখন আমাদের কোনও শিক্ষার্থী মুছতে হবে না এবং যখন কোনও ছাত্র স্কুল ছেড়ে যায়, তখন আমাদের কোনও শিক্ষক মোছার দরকার হয় না।
আমরা সম্মিলনকে সেই সম্পর্কগুলিকে বলি যাদের সম্পর্কগুলির স্বতন্ত্র জীবনচক্র রয়েছে তবে মালিকানা রয়েছে এবং শিশু অবজেক্টগুলি অন্য প্যারেন্ট অবজেক্টের সাথে থাকতে পারে না। সেল ফোন এবং একটি সেল ফোনের ব্যাটারির উদাহরণ নেওয়া যাক। একটি একক ব্যাটারি কোনও ফোনের অন্তর্ভুক্ত থাকতে পারে তবে ফোনটি যদি কাজ করা বন্ধ করে দেয় এবং আমরা এটি আমাদের ডাটাবেস থেকে মুছে ফেলি তবে ফোনের ব্যাটারি মোছা হবে না কারণ এটি এখনও কার্যকর থাকবে। সুতরাং, সমষ্টিগতভাবে, মালিকানা থাকাকালীন, অবজেক্টগুলির জীবন চক্র থাকে
আমরা শব্দটি ব্যবহার করি রচনা সম্পর্ক যার বস্তু একটি স্বাধীন জীবনচক্র হবে না উল্লেখ করতে, এবং যদি পিতা বা মাতা বস্তুর মুছে ফেলা হয়, সমস্ত শিশু বস্তু এছাড়াও মুছে ফেলা হবে। আসুন প্রশ্ন ও উত্তরগুলির মধ্যে সম্পর্কের উদাহরণ নিই। একক প্রশ্নের একাধিক উত্তর থাকতে পারে এবং উত্তরগুলি একাধিক প্রশ্নের অন্তর্ভুক্ত থাকতে পারে না। আমরা যদি প্রশ্নগুলি মুছে ফেলি তবে উত্তরগুলি স্বয়ংক্রিয়ভাবে মোছা হবে।
অ্যাসোসিয়েশন দুটি পৃথক শ্রেণীর মধ্যে একটি সম্পর্ক এবং সমিতি যেকোন প্রকারের হতে পারে এক থেকে এক, এক হতে পারে ইত্যাদি It এটি দুটি পৃথক পৃথক সত্তায় যোগদান করে।
সংঘবদ্ধতা হল বিশেষত্বের একটি সংগঠন যা ক্লাসের (বা সত্তা) শ্রেণীর মধ্যে একমুখী একতরফা সম্পর্ক, উদাহরণস্বরূপ ওয়ালেট এবং মানি ক্লাসগুলির জন্য। মানিব্যাগের মানি আছে তবে অর্থের ওয়ালেট অগত্যা প্রয়োজন হয় না কারণ এটির একটি দিকনির্দেশক সম্পর্ক। এই সম্পর্কের ক্ষেত্রে উভয় এন্ট্রি যদি অন্য একটিতে শেষ হয় তবে বেঁচে থাকবে। আমাদের উদাহরণে যদি ওয়ালেট শ্রেণি উপস্থিত না থাকে তবে এর অর্থ এই নয় যে অর্থ শ্রেণীর অস্তিত্ব থাকতে পারে না।
সংমিশ্রণ একত্রিত করার একটি সীমাবদ্ধ ফর্ম যা দুটি সত্তা (বা আপনি ক্লাস বলতে পারেন) একে অপরের উপর নির্ভরশীল। যেমন হিউম্যান অ্যান্ড হার্ট। একজন মানুষের বেঁচে থাকার জন্য হৃদয়ের প্রয়োজন এবং বেঁচে থাকার জন্য একটি হৃদয়ের একটি মানব দেহের প্রয়োজন। অন্য কথায়, যখন শ্রেণি (সত্তা) একে অপরের উপর নির্ভরশীল এবং তাদের জীবনকাল একই হয় (যদি একজন মারা যায় তবে অন্য একজনও হয়) তবে এটির একটি রচনা। মানব শ্রেণি উপস্থিত না থাকলে হার্ট ক্লাসের কোনও বুদ্ধি নেই।
https://www.linkedin.com/pulse/types-relationships-object-oriented-programming-oop-sarah-el-dawody/
রচনা: একটি "অংশের" সম্পর্ক।
উদাহরণস্বরূপ, "ইঞ্জিন গাড়ির অংশ", "হৃদয় শরীরের অঙ্গ"।
সমিতি: একটি "হ্যাস-এ" টাইপের সম্পর্ক
উদাহরণস্বরূপ, ধরুন আমাদের দুটি শ্রেণি রয়েছে তবে এই দুটি শ্রেণি যদি "উভয়-এ" সম্পর্ক হয় তবে যদি এই উভয় সত্তা কিছু কাজের জন্য একে অপরের বস্তুটি ভাগ করে এবং একই সাথে তারা একে অপরের নির্ভরতা ব্যতীত বিদ্যমান থাকতে পারে বা উভয়েরই রয়েছে তাদের নিজের জীবনকাল।
উপরোক্ত উদাহরণটি কর্মচারী এবং ব্যবস্থাপক উভয়ই একে অপরের অবজেক্ট এবং তাদের নিজস্ব জীবনযাত্রা চক্র উভয় ব্যবহারের কারণে অ্যাসোসিয়েশন সম্পর্ক দেখায়।
সমষ্টি: " হস -এ" সম্পর্কের উপর ভিত্তি করে এবং এটি association সংযুক্তির একটি বিশেষ রূপ
উদাহরণস্বরূপ, "ছাত্র" এবং "ঠিকানা"। প্রতিটি শিক্ষার্থীর একটি ঠিকানা থাকতে হবে সুতরাং শিক্ষার্থী শ্রেণি এবং ঠিকানা শ্রেণীর মধ্যে সম্পর্ক "হ্যাঁ-এ" টাইপের সম্পর্ক হবে তবে তদ্বিপরীত সত্য নয়।