Samenstelling en aggregatie
Klassen en objecten kunnen aan elkaar worden gerelateerd. Overerving beschrijft een "IS A"-relatie. Een leeuw IS EEN dier. Deze relatie wordt eenvoudig uitgedrukt met behulp van overerving, waar
Animal
de bovenliggende klasse zou zijn en
Lion
het kind. Maar niet elke relatie in de wereld wordt op deze manier correct beschreven. Een toetsenbord heeft bijvoorbeeld zeker een relatie met een computer, maar
het is geen computer . Handen hebben een relatie met een persoon, maar ze zijn geen persoon. Deze gevallen vertegenwoordigen een ander type relatie - niet "IS A", maar "HAS A". Handen zijn geen persoon, maar een persoon HEEFT handen. Een toetsenbord is geen computer, maar een computer HEEFT een toetsenbord. "HEEFT EEN"
. Het verschil tussen deze concepten ligt in de "strengheid" van de relaties. Laten we een eenvoudig voorbeeld nemen: we hebben een
Car
. Elke auto heeft een motor. Bovendien kan elke auto passagiers vervoeren. Wat is het fundamentele verschil tussen de velden
Engine engine
en
Passenger[] passengers
? Als een passagier
A
in een auto zit, betekent dat niet dat er ook passagiers
B
in
C
de auto kunnen zitten. Eén auto biedt plaats aan meerdere passagiers. Bovendien kunnen alle passagiers uit de auto stappen, maar blijft deze soepel functioneren. De relatie tussen de
Car
klasse en de
Passenger[] passengers
array is minder strikt.
Aggregatie heet dat . Hier is een goed artikel over dit onderwerp:
Relaties tussen klassen (objecten). Het is een ander goed voorbeeld van aggregatie. Laten we zeggen dat we een
Student
klas hebben die een student vertegenwoordigt, en een
StudentGroup
die een groep studenten vertegenwoordigt. Een student kan lid zijn van een natuurkundeclub, een Star Wars-studentenfanclub of een comedyclub.
Samenstelling is een strikter type relatie. Bij compositie heeft een object een ander object, maar het kan niet bij een ander object van hetzelfde type horen. Het eenvoudigste voorbeeld is een automotor. Als een auto een motor heeft, dan kan die motor niet bij een andere auto horen. Zoals je kunt zien, is die relatie veel strikter dan die van
Car
en
Passengers
.
GO TO FULL VERSION