অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) তে অ্যাসোসিয়েশন, অ্যাগ্রিগেশন, এবং কম্পোজিশন হল সম্পর্কের তিনটি মৌলিক ধারণা। এই তিনটি সম্পর্কই অবজেক্টগুলোর মধ্যে আন্তঃসংযোগ এবং কার্যকলাপ নির্দেশ করে, তবে এগুলির মধ্যে কিছু মূল পার্থক্য রয়েছে। নিচে এই তিনটি সম্পর্কের বিস্তারিত আলোচনা করা হলো:
1. অ্যাসোসিয়েশন (Association)
- সংজ্ঞা: অ্যাসোসিয়েশন হল দুই বা ততোধিক অবজেক্টের মধ্যে একটি সাধারণ সম্পর্ক। এটি একটি সাধারণ এবং স্বাভাবিক সম্পর্ক যা অবজেক্টগুলো একে অপরের সাথে যুক্ত থাকে।
- প্রকারভেদ: অ্যাসোসিয়েশন হতে পারে একদিক থেকে (One-to-One), দ্বিদিক থেকে (One-to-Many), বা বহু (Many-to-Many)।
- উদাহরণ:
- একটি ছাত্র এবং একটি কোর্স: একটি ছাত্র একটি কোর্সে ভর্তি হতে পারে, এবং একটি কোর্সে একাধিক ছাত্র থাকতে পারে।
- গ্রাহক এবং অর্ডার: একটি গ্রাহক একাধিক অর্ডার দিতে পারে, এবং প্রতিটি অর্ডার একটি নির্দিষ্ট গ্রাহকের সাথে সম্পর্কিত।
2. অ্যাগ্রিগেশন (Aggregation)
- সংজ্ঞা: অ্যাগ্রিগেশন হল একটি বিশেষ ধরনের অ্যাসোসিয়েশন যেখানে একটি অবজেক্ট অন্য অবজেক্টের একটি অংশ বা উপাদান হিসাবে কাজ করে, কিন্তু উভয়ের মধ্যে একটি "হাসপাতালের" সম্পর্ক থাকে। অর্থাৎ, অংশটি যদি প্রধান অবজেক্ট থেকে আলাদা হয়, তবুও এটি নিজস্ব অস্তিত্ব বজায় রাখতে পারে।
- উদাহরণ:
- একটি ক্লাস এবং ছাত্র: একটি ক্লাসের মধ্যে একাধিক ছাত্র থাকতে পারে, কিন্তু ছাত্ররা ক্লাসের বাইরে নিজস্ব অস্তিত্ব বজায় রাখতে পারে। যদি ক্লাসটি বাদ দেওয়া হয়, ছাত্ররা এখনও বিদ্যমান।
- একটি বিশ্ববিদ্যালয় এবং বিভাগ: একটি বিশ্ববিদ্যালয়ে একাধিক বিভাগ থাকতে পারে, এবং একটি বিভাগ বিশ্ববিদ্যালয়ের বাইরে নিজেদের পরিচিতি বজায় রাখতে পারে।
3. কম্পোজিশন (Composition)
- সংজ্ঞা: কম্পোজিশন হল একটি বিশেষ ধরনের অ্যাগ্রিগেশন যেখানে অংশ এবং প্রধান অবজেক্টের মধ্যে একটি শক্তিশালী সম্পর্ক রয়েছে। এখানে, অংশটি প্রধান অবজেক্টের অস্তিত্বের উপর নির্ভরশীল। অর্থাৎ, প্রধান অবজেক্টটি নির্মূল হলে অংশটিও নির্মূল হয়ে যায়।
- উদাহরণ:
- একটি বাড়ি এবং ঘর: একটি বাড়ির মধ্যে বিভিন্ন ঘর থাকতে পারে, এবং যদি বাড়িটি ভেঙে যায়, তাহলে ঘরগুলোও শেষ হয়ে যাবে। ঘরগুলোর অস্তিত্ব বাড়ির সাথে অঙ্গীভূত।
- একটি গাড়ি এবং ইঞ্জিন: একটি গাড়ির ইঞ্জিন গাড়ির একটি অপরিহার্য অংশ। যদি গাড়িটি বিক্রির জন্য যায় বা নষ্ট হয়ে যায়, তখন ইঞ্জিনও থাকবে না।
পার্থক্য
| দিক | অ্যাসোসিয়েশন | অ্যাগ্রিগেশন | কম্পোজিশন |
|---|---|---|---|
| সম্পর্ক | সাধারণ সম্পর্ক | অংশ-প্রধান সম্পর্ক | শক্তিশালী অংশ-প্রধান সম্পর্ক |
| অস্তিত্ব | অবজেক্টগুলো স্বাধীনভাবে অস্তিত্ব রাখতে পারে | অংশটি স্বাধীনভাবে অস্তিত্ব রাখতে পারে | অংশটি প্রধান অবজেক্টের উপর নির্ভরশীল |
| সম্পর্কের শক্তি | দুর্বল | মাঝারি | শক্তিশালী |
উপসংহার
অ্যাসোসিয়েশন, অ্যাগ্রিগেশন, এবং কম্পোজিশন হল অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ে অবজেক্টগুলোর মধ্যে সম্পর্ক বোঝার জন্য মৌলিক ধারণা। এই সম্পর্কগুলো সফটওয়্যার ডিজাইন এবং মডেলিংয়ের সময় ডেটার কাঠামো এবং কার্যকলাপ নির্ধারণ করতে সাহায্য করে। সঠিকভাবে এই সম্পর্কগুলো ব্যবহার করলে কোডের পুনঃব্যবহারযোগ্যতা এবং রক্ষণাবেক্ষণযোগ্যতা বৃদ্ধি পায়।
Read more