Composition over Inheritance

Това е начин за цялостна организация на отделните класове в ООП, според който класовете не трябва да се наследяват един друг и така да постигат code reuse, полиморфизъм…, а да се съдържат един в друг, тоест, като даден клас съдържа като пропъртита – обекти от други класове.

Едно от предимствата на този модел е, че системата става по-гъвкава, може да сдържа по-разнородни елементи, за разлика от Inheritance моделът, при който системата от класове напомня повече на „родословно дърво“.

It is more natural to build business-domain classes out of various components than trying to find commonality between them and creating a family tree.

Да си спомним от реалният живот, как например обектът от клас Car, може да съдържа много обекти от различни класове като Tyres, Engine, Brakes… които няма нужда да наследяват Car.