Junior — Middle
Wat is het verschil tussen aggregatie- en compositie-relaties in objectgeoriënteerd programmeren?
sobes.tech AI
Antwoord van AI
Aggregatie en compositie zijn twee soorten relaties tussen objecten in objectgeoriënteerd programmeren (OOP), die beschrijven hoe objecten met elkaar verbonden zijn.
-
Aggregatie: is een "heeft"-relatie (has-a), waarbij het ene object een ander bevat, maar de levenscyclus van het ingebedde object niet afhankelijk is van de container. Het ingebedde object kan zelfstandig bestaan.
-
Compositie: een sterkere vorm van aggregatie, waarbij het ingebedde object volledig toebehoort aan de container en niet los bestaat. Als de container wordt vernietigd, verdwijnt ook het ingebedde object.
Voorbeeld:
class Engine {}
// Aggregatie: Car heeft Engine, maar Engine kan los bestaan
class Car {
var engine: Engine?
}
// Compositie: House bestaat uit Rooms, die niet zonder het huis bestaan
class Room {}
class House {
var rooms: [Room] = []
init() {
rooms = [Room(), Room()]
}
}
In compositie zijn de objecten nauw verbonden en worden ze samen beheerd, terwijl in aggregatie de relatie zwakker is.