Komposition und Aggregation repräsentieren jeweils ein Ganzes und seine Teile. Sie ergänzen damit die Assoziationen resp. Beziehungsarten, welche Sie bereits aus der LU03 kennen:
Assoziation | Beispiel (siehe Abb. 1) |
---|---|
Allgemein | Mitarbeiter - Firma |
Einseitig | Geldbeutel - Mensch |
Zweiseitig | Kunde - Konto |
Komposition | Blume - Blüte, Wurzel |
Aggregation | Lampe - Fassung, Leuchtkörper |
Abb. 6.1: Beispiele von verschiednenen Assoziationen
Abb. 6.2: Beispiele für Komposition und Aggregation
Aggregation ist der Sonderfall einer gerichteten Assoziation. Sie drückt ein starkes Verhältnis von zwei an sich selbständigen Objekten aus, von denen eines Teil des anderen ist.
Abb. 6.3: Umsetzung Aggregation (d.h. eigenständige Referenzen und zufügen der Komponenten über set Methode resp. Property)
Die Spezialform eines Aggregats, welches wie bereits erwähnt aus existenziell abhängigen Komponenten besteht, nennt man Komposition. Sie wird auch als “echte Aggregation” bezeichnet und übernimmt die dynamische Weiterleitung von Botschaften an ihre Komponenten.
Abb. 6.4: Umsetzung Komposition (d.h. keine eigenständige Referenzen und Objekte im Konstruktor erzeugen)
In der LU05 haben Sie zum Thema Delegation gelernt, dass die Klasse Eck
vier Instanzen der Klasse Punkt
“aggregiert”. Ein Punkt ist Teil eines Ecks. Da der Punkt aber “sein” Eck nicht kennt, handelt es sich hierbei um eine gerichtete, einseitige Beziehung mit einer entsprechenden Kardinalität. Weil hier ein Punkt
ohne Eck
wenig Sinn macht und darum existenziell von Eck
abhängig ist, handelt es sich bei dieser Teile-Ganzes Beziehung um eine Komposition.
Abb. 6.5: Komposition eines Vierecks
Quellen: