Sobes.tech
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.