4.1 Definition und Beispiele |
|||||
4.1.1 Aggregation |
|||||
Im wirklichen Leben gibt es ein allgegenwärtiges Strukturmerkmal, das so beschrieben werden kann: Es gibt Dinge, die andere Dinge enthalten. Und auch letztere können wieder aus Dingen bestehen. Die einfachsten Beispiele finden sich im technischen Bereich: Ein Airbus besteht aus Grobkomponenten, diese aus feineren Komponenten, diese auch wieder – bis man bei elementaren Teilen angekommen ist. |
Dinge, die andere Dinge enthalten |
||||
Ein so wichtiges Strukturmerkmal muss dann natürlich auch bei der Realitätsmodellierung, sei es für Systeme, für Datenbanken oder für Geschäftsprozesse, zur Verfügung stehen. |
|||||
Das Konzept für die Modellierung dieses Strukturmerkmals wird in der objektorientierten Modellierung Aggregation genannt. Es ist eine spezielle Ausprägung einer Assoziation, allerdings können nur zweistellige Assoziationen Aggregationen sein. |
|||||
Bei der Aggregation geht es also um Beziehungen zwischen Klassen, die den Tatbestand beschreiben, dass bestimmte Objekte in anderen enthalten sind [Anmerkung] . Deshalb nennen die UML-Autoren (und ihre Vorgänger) diese Beziehung auch whole-part relationship. |
|||||
Meier und Wüst schlagen die Begriffe Aggregationsklasse für die übergeordnete und Komponentenklassen für die untergeordneten vor [Meier und Wüst 1997]. Eine Komponentenklasse kann wiederum für weitere Objekte Aggregationsklasse sein. Oftmals wird diese Beziehung auch Teil_von-Beziehung (part_of-Beziehung) genannt. |
Aggregations- |
||||
4.1.2 Komposition |
|||||
Kompositionen (composite aggregation) sind ebenfalls Aggregationen, allerdings mit einer zusätzlichen Bedingung: Jedes Objekt einer Komponentenklasse darf zu einem bestimmten Zeitpunkt nur Komponente eines einzigen Objekts der Aggregatklasse sein. Außerdem ist das Aggregatobjekt verantwortlich für die Entstehung und Zerstörung der Komponenten. |
|||||
Es muss also bei der Aggregationsklasse eine Kardinalität von nicht größer als eins vorliegen. Außerdem gilt, dass bei einem Löschen eines Aggregationsobjekts die entsprechenden Komponentenobjekte ebenfalls gelöscht werden. Die Komponenten sind also existenzabhängig vom Ganzen. |
unshared aggregation, |
||||
Eine Komposition wird auf dieselbe Weise dargestellt wie eine zweistellige Assoziation, aber mit einer gefüllten Raute am Assoziationsende. |
|||||
4.2 Einführende Beispiele mit grafischer Notation |
|||||
4.2.1 Aggregationen |
|||||
Ein PC (Personal Computer) besteht typischerweise (u.a.) aus einer Hauptplatine, Festplatten und einem Bildschirm. Auf der Hauptplatine wiederum finden sich (u.a.) Prozessoren, Speicherbausteine und Bussysteme (vgl. das Beispiel unten). Beliebt in der Literatur ist auch das Beispiel moderner Flugzeuge, die natürlich – vielstufig – aus zahlreichen Komponenten bestehen. |
Komponenen eines PC |
||||
In der folgenden Abbildung ist das oben erwähnte Beispiel in der UML-Notation angegeben. Jede Verbindungslinie von einer Komponenten- zu einer Aggregationsklasse bedeutet eine Teil_von-Beziehung und wird durch eine Raute wie in der Abbildung gezeigt grafisch ausgedrückt [Anmerkung] . Die Raute kennzeichnet die Aggregation. |
|||||
Die einzelnen Beziehungen werden auch als Assoziationen bezeichnet und können auch mit den in Abschnitt 3.4 eingeführten Wertigkeiten spezifiziert werden. |
|||||
|
|||||
|
|||||
Eine textliche Beschreibung der Assoziationen ist in der Abbildung beispielhaft angegeben. Die Wertigkeiten legen die Beziehungen beispielhaft fest: |
|||||
|
|||||
Die Grenze zwischen „einfachen“ Assoziationen und Aggregationen ist fließend. Deshalb kann die oben als einfache Assoziation modellierte Stücklistenbeziehung (vgl. Abbildung 3.5-8) hier als Aggregation angeführt werden. |
Stückliste |
||||
|
|||||
|
|||||
Allerdings ist diese Modellierung aussagekräftiger als die oben, da sie zusätzlich zur semantischen Verknüpfung noch das Enthaltensein ausdrückt. |
|||||
4.2.2 Kompositionen |
|||||
Bei Kompositionen wird die Raute eingeschwärzt, ansonsten ist die grafische Notation dieselbe wie für Aggregationen. Die Wertigkeit auf der Seite der Aggregation ist auf Grund der Definition von Kompositionen immer eins, so dass sie oft auch weggelassen wird. |
Existenzabhängigkeit |
||||
Ein Beispiel für eine Komposition ist die Beziehung zwischen einem Rechnungskopf und den Rechnungspositionen, das in der folgenden Abbildung angegeben ist. |
|||||
|
|||||
|
|||||
Ein anderes gern angeführtes Beispiel ist das der Baumstruktur eines Dateien verwaltenden Systems, z.B. des Windows Explorer. Löscht man ein Dateiverzeichnis, werden die enthaltenen Dateien und Verzeichnisse auch gelöscht. Außerdem kann eine konkrete Datei nur in einem Verzeichnis sein. |
Baumstruktur |
||||
|
|||||
|
|||||
|
|||||
|
|||||
|
|||||