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-
und
Komponenten-
klassen

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 Aggregations­objekts die entsprechenden Komponentenobjekte ebenfalls gelöscht werden. Die Komponenten sind also existenzabhängig vom Ganzen.

unshared aggregation,
strong ownership

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.


 

Abbildung 4.2-1:

Erfassung einer Komponentenstruktur durch Aggregation

Eine  textliche Beschreibung der Assoziationen ist in der Abbildung beispielhaft angegeben. Die Wertigkeiten legen die Beziehungen beispielhaft fest:

  • Ein PC hat genau eine Hauptplatine
  • Eine Hauptplatine steckt in maximal einem PC
  • Ein PC hat mindestens eine Festplatte
  • Jede Festplatte gehört zu maximal einem PC
  • Ein PC hat genau einen Bildschirm
  • Ein Bildschirm gehört zu maximal einem PC
  • Eine Hauptplatine enthält mindestens einen, maximal vier Prozessoren
  • Jeder Prozessor gehört zu maximal einer Hauptplatine
  • Eine Hauptplatine enthält mindestens einen Speicherbaustein
  • Jeder Speicherbaustein gehört zu maximal einer Hauptplatine[4]
  • Eine Hauptplatine enthält mindestens ein, maximal drei Bussysteme
  • Jedes Bussystem gehört zu einer Hauptplatine

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


 

Abbildung 4.2-2:

Stücklistenbeziehung als Aggregation

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.

Existenz­abhängigkeit

Ein Beispiel für eine Komposition ist die Beziehung zwischen einem Rechnungskopf und den Rechnungspositionen, das in der folgenden Abbildung angegeben ist.


 

Abbildung 4.2-3:

Die Beziehung zwischen Rechnung(skopf) und Rechnungspositionen als Komposition

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