Sobes.tech
Junior

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