Compoziție și agregare
Clasele și obiectele pot fi legate între ele. Moștenirea descrie o relație „IS A”. Un leu ESTE UN animal. Această relație se exprimă ușor folosind moștenirea, unde
Animal
ar fi clasa părinte și
Lion
ar fi copilul. Dar nu toate relațiile din lume sunt descrise corect în acest fel. De exemplu, o tastatură are cu siguranță o relație cu un computer, dar
nu este un computer . Mâinile au o anumită relație cu o persoană, dar nu sunt o persoană. Aceste cazuri reprezintă un alt tip de relație - nu „IS A”, ci „HAS A”. Mâinile nu sunt o persoană, ci o persoană ARE mâini. O tastatură nu este un computer, ci un computer ARE O tastatură. "ARE O"
. Diferența dintre aceste concepte constă în „strictețea” relațiilor. Să luăm un exemplu simplu: avem un
Car
. Fiecare mașină are un motor. În plus, fiecare mașină poate transporta pasageri. Care este diferența fundamentală dintre câmpurile
Engine engine
și
Passenger[] passengers
? Dacă pasagerul
A
stă în interiorul unei mașini, asta nu înseamnă că pasagerii
B
și
C
nu pot fi și în mașină. O mașină poate găzdui mai mulți pasageri. În plus, toți pasagerii pot ieși din mașină, dar aceasta va continua să funcționeze fără probleme. Relația dintre
Car
clasă și
Passenger[] passengers
matrice este mai puțin strictă. Se numește
agregare . Iată un articol bun pe această temă:
Relații între clase (obiecte). Acesta oferă un alt exemplu bun de agregare. Să presupunem că avem o
Student
clasă care reprezintă un elev și o clasă
StudentGroup
care reprezintă un grup de elevi. Un student poate fi membru al unui club de fizică, al unui fan club al studenților Star Wars sau al unui club de comedie.
Compoziția este un tip mai strict de relație. La utilizarea compoziției, un obiect are un alt obiect, dar nu poate aparține altui obiect de același tip. Cel mai simplu exemplu este un motor de mașină. Dacă o mașină are un motor, atunci acel motor nu poate aparține altei mașini. După cum puteți vedea, acea relație este mult mai strictă decât cea dintre
Car
și
Passengers
.
GO TO FULL VERSION