এই রিলেশনশিপগুলো মূলত ব্যবহারের ওপর ভিত্তি করে। এটি নির্ধারণ করে যে একটি নির্দিষ্ট ক্লাস HAS-A একটি নির্দিষ্ট জিনিস। এই রিলেশনশিপ কোড ডুপ্লিকেশন এবং বাগ কমাতে সাহায্য করে।
একটি উদাহরণ দেখি:
উদাহরণ
public class Vehicle { }
public class Speed { }
public class Van extends Vehicle {
private Speed sp;
}
এটি দেখাচ্ছে যে Van ক্লাস HAS-A Speed। Speed জন্য আলাদা ক্লাস রাখায় আমাদের Van ক্লাসের ভিতরে স্পীড সংক্রান্ত সারা কোড রাখতে হয় না, যা Speed ক্লাসকে একাধিক অ্যাপ্লিকেশনে রি-ইউজ করতে সম্ভব করে তোলে।
অবজেক্ট-অরিয়েন্টেড ফিচারে, ইউজারদের চিন্তা করতে হয় না কোন অবজেক্ট আসলে কাজটি করছে। এটি অর্জন করতে, Van ক্লাস ইমপ্লিমেন্টেশন ডিটেইল ইউজারদের থেকে লুকিয়ে রাখে। সুতরাং, মূলত কী হয়: ইউজাররা Van ক্লাসকে একটি নির্দিষ্ট অ্যাকশন করতে বলবে এবং Van ক্লাস বা তো নিজে কাজটি করবে বা অন্য একটি ক্লাসকে কাজটি করার জন্য বলবে।