আমি ইনহেরিটেন্স ব্যাপারটা বুঝি কিন্তু কম্পোজিশন বুঝতেসি না। কম্পজিশন কি? এবং এই ২ টার মদ্ধে সম্পর্ক কিংবা পার্থক্য কি?

asked 14 Mar '17, 11:31

Emranul%20haque%20Rakib's gravatar image

Emranul haque Rakib
33916

edited 13 Oct '17, 12:13

Tamim%20Shahriar%20Subeen's gravatar image

Tamim Shahriar Subeen ♦♦
6.2k21128


ইনহেরিটেন্স হল "ইজ এ" (Is A) রিলেশনশিপ। যেমন ঃ ম্যানেজের ইজ এন এমপ্লয়ী, কার ইজ এ ভেহিকল ইত্যাদি।

কম্পোজিশন হল 'হেজ এ" (Has A) রিলেশনশিপ। যেমন ঃ ম্যানেজের হেজ এ কার, কার হেজ এন ইঞ্জিন ইত্যাদি।

এখানে লক্ষণীয় যে, ম্যানেজার এবং কার এর মধ্যে কিন্তু কোন ইনহেরিটেন্স অর্থবোধক না এবং কোন সেন্স মেইক করেনা। ম্যানেজার ক্লাস একটা কার (গাড়ী) ক্লাসকে ধারণ করতে পারে। একইভাবে একটা কার ক্লাস একটা এঞ্জিন ক্লাসকে ধারণ করতে পারে। এই ধারণ করাটাই হল "কম্পোজিশন"।

permanent link

answered 12 Oct '17, 18:18

Nabil's gravatar image

Nabil
2964

চাইল্ড ক্লাস যখন প্যারেন্ট ক্লাস কে ইনহেরিট করে তখন সে প্যারেন্ট ক্লাসের সব এট্রিবিউট পায়, সাথে তার নিজের এট্রিবিউট গুলো ও থাকে । কিন্তু প্যারেন্ট ক্লাস কিন্তু চাইল্ড ক্লাসের এট্রিবিউট পাবে না ।

ধরা যাক , আমার দুইটা ক্লাস আছে । প্যারেন্ট ক্লাস => Person, চাইল্ড ক্লাস Student

class Person {
    String name;
    int age;
}

class Student extends Person {
    String ID;
    String school;
}

এখানে, Student কিন্তু Person ক্লাসের সবই পাচ্ছে । তাকে বলতে গেলে Person ক্লাসে একটা সাবটাইপ বলা যায় । তাই যদি হয় , তাহলে তো Student ক্লাসের অবজেক্ট কে Person ক্লাসের অবজেক্ট হিসেবে ডিক্লেয়ার করা যায় তাই না? (অর্থাৎ আমরা কাস্টিং করে নিচ্ছি)

এখানে একটা ঝামেলা হচ্ছে , যখনই আমরা Student এর অবজেক্ট কে Person টাইপে নিচ্ছি , তখন কিন্তু তার নিজের এট্রিবিউট - ID, school আর অ্যাক্সেস করা যাবে না কারণ এগুলো Person এ নেই । একে বলা হয় ডাউনকাস্টিং।

চাইল্ড ক্লাস অবজেক্ট কে চাইলে প্যারেন্ট ক্লাসের টাইপে কাস্ট করা যায় । কিন্তু উল্টোটা করা যায় না । এই ব্যাপারটা হচ্ছে কম্পোজিশন। যে আমার চাইল্ড আর প্যারেন্ট ক্লাসের মাঝে রিলেশন এবং তাদের একটাকে আরেকটা দিয়ে ম্যাপ করা যায় কিনা ।

permanent link

answered 29 Jul '17, 17:16

ShawonAshraf's gravatar image

ShawonAshraf
2435

"চাইল্ড ক্লাস অবজেক্ট কে চাইলে প্যারেন্ট ক্লাসের টাইপে কাস্ট করা যায় । কিন্তু উল্টোটা করা যায় না । এই ব্যাপারটা হচ্ছে কম্পোজিশন। যে আমার চাইল্ড আর প্যারেন্ট ক্লাসের মাঝে রিলেশন এবং তাদের একটাকে আরেকটা দিয়ে ম্যাপ করা যায় কিনা । " - কম্পোজিশনের এই ধারনা সঠিক না। কম্পোজিশন "ইজ এ" রিলেশনশিপ না যে প্যারেন্ট চাইল্ড ব্যাপার স্যাপার আসবে।

(12 Oct '17, 18:02) Nabil
Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×68

question asked: 14 Mar '17, 11:31

question was seen: 818 times

last updated: 13 Oct '17, 12:13