Sobes.tech
Junior

Wat is het verschil tussen compositie en aggregatie?

sobes.tech AI

Antwoord van AI

Samenstelling en aggregatie zijn "deel-geheel"-relaties tussen objecten.

  • Samenstelling: Strikte relatie waarbij het deel niet zonder het geheel kan bestaan. Het verwijderen van het geheel verwijdert ook de delen. De levenscyclus van het afhankelijke deel wordt volledig bepaald door het geheel. Voorbeeld: Kamers (delen) in een Huis (geheel). Zonder het Huis bestaan de kamers niet.

    // Voorbeeld van samenstelling:
    class Room {
        private String name;
    
        public Room(String name) {
            this.name = name;
        }
    
        // ... methoden van Room
    }
    
    class House {
        private List<Room> rooms = new ArrayList<>(); // Delen worden gemaakt en beheerd door het geheel
    
        public House() {
            rooms.add(new Room("Woonkamer")); // Delen maken binnen het geheel
            rooms.add(new Room("Slaapkamer"));
        }
    
        // ... methoden van House
    }
    
  • Aggregatie: Zwakkere relatie waarbij het deel onafhankelijk van het geheel kan bestaan. Het verwijderen van het geheel leidt niet noodzakelijk tot het verwijderen van de delen. Delen kunnen met meerdere verschillende objecten verbonden zijn. Voorbeeld: Auto (geheel) en Wielen (delen). Wielen kunnen los bestaan van de auto en op een andere worden gebruikt.

    // Voorbeeld van aggregatie:
    class Wheel {
        private int size;
    
        public Wheel(int size) {
            this.size = size;
        }
    
        // ... methoden van Wheel
    }
    
    class Car {
        private List<Wheel> wheels = new ArrayList<>(); // Het geheel bevat referenties naar de delen
    
        public Car(List<Wheel> wheels) {
            this.wheels = wheels; // Ontvangst van delen van buitenaf
        }
    
        // ... methoden van Car
    }
    
    // Voorbeeld van maken en gebruiken:
    List<Wheel> myWheels = new ArrayList<>();
    myWheels.add(new Wheel(16));
    myWheels.add(new Wheel(16));
    // ...
    Car myCar = new Car(myWheels); // Aggregatie: Wielen kunnen voor en na de auto bestaan
    

Belangrijkste verschillen in de tabel:

Criteria Samenstelling Aggregatie
Afhankelijkheid Strikt: Deel hangt af van het geheel Zwak: Deel kan onafhankelijk bestaan
Levenscyclus Deel wordt beheerd door het geheel Deel wordt niet noodzakelijk door het geheel beheerd
Verwijdering van geheel Leidt tot verwijdering van delen Leidt niet noodzakelijk tot verwijdering van delen
Meerdere relaties Deel behoort slechts tot één geheel Deel kan met meerdere eenheden verbonden zijn
UML-diagram Volledig ingevulde rombussen aan de zijde van het geheel Lege rombussen aan de zijde van het geheel