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 |