Was ist der Unterschied zwischen Komposition und Aggregation?
sobes.tech KI
Antwort von AI
Komposition und Aggregation sind "Teil-Ganzes"-Beziehungen zwischen Objekten.
-
Komposition: Strenge Beziehung, bei der der Teil ohne das Ganze nicht existieren kann. Das Löschen des Ganzen löscht auch die Teile. Der Lebenszyklus des abhängigen Teils wird vollständig vom Ganzen bestimmt. Beispiel: Zimmer (Teile) in einem Haus (Ganze). Ohne das Haus existieren die Zimmer nicht.
// Beispiel für Komposition: class Room { private String name; public Room(String name) { this.name = name; } // ... Methoden von Room } class House { private List<Room> rooms = new ArrayList<>(); // Teile, die vom Ganzen erstellt und verwaltet werden public House() { rooms.add(new Room("Wohnzimmer")); // Teil innerhalb des Ganzen erstellen rooms.add(new Room("Schlafzimmer")); } // ... Methoden von House } -
Aggregation: Schwächere Beziehung, bei der der Teil unabhängig vom Ganzen existieren kann. Das Löschen des Ganzen führt nicht notwendigerweise zum Löschen der Teile. Teile können mit mehreren verschiedenen Objekten verbunden sein. Beispiel: Auto (Ganze) und Räder (Teile). Räder können unabhängig vom Auto existieren und in einem anderen verwendet werden.
// Beispiel für Aggregation: class Wheel { private int size; public Wheel(int size) { this.size = size; } // ... Methoden von Wheel } class Car { private List<Wheel> wheels = new ArrayList<>(); // Das Ganze enthält Referenzen auf die Teile public Car(List<Wheel> wheels) { this.wheels = wheels; // Teile von außen erhalten } // ... Methoden von Car } // Beispiel für Erstellung und Verwendung: List<Wheel> myWheels = new ArrayList<>(); myWheels.add(new Wheel(16)); myWheels.add(new Wheel(16)); // ... Car myCar = new Car(myWheels); // Aggregation: Räder können vor und nach dem Auto existieren
Hauptunterschiede in der Tabelle:
| Kriterium | Komposition | Aggregation |
|---|---|---|
| Abhängigkeit | Streng: Das Teil hängt vom Ganzen ab | Schwach: Das Teil kann unabhängig existieren |
| Lebenszyklus | Das Teil wird vom Ganzen verwaltet | Das Teil wird nicht notwendigerweise vom Ganzen verwaltet |
| Löschen des Ganzen | Führt zum Löschen der Teile | Führt nicht notwendigerweise zum Löschen der Teile |
| Mehrfache Beziehungen | Das Teil gehört nur zu einem Ganzen | Das Teil kann mit mehreren Ganzen verbunden sein |
| UML-Diagramm | Voll ausgefülltes Rhombus auf der Seite des Ganzen | Leerer Rhombus auf der Seite des Ganzen |