Nach dieser Lektion kannst du
Manche Klassen stehen in einer besonderen Beziehung zueinander. Dabei besteht ein Objekt ganz oder teilweise aus anderen Objekten. In UML unterscheidet man dabei zwischen Aggregation und Komposition. Beides sind sogenannte Teil-Ganzes-Beziehungen. Der Unterschied liegt darin, wie stark die Teile vom Ganzen abhängig sind.
Eine Aggregation beschreibt eine lockere Teil-Ganzes-Beziehung. Das Ganze besitzt zwar einen Teil, dieser kann jedoch auch unabhängig davon existieren. Man spricht deshalb von einer Existenzunabhängigkeit.
Ein Hund kann ein Halsband besitzen. Das Halsband gehört momentan zu diesem Hund. Es könnte jedoch problemlos verkauft, verschenkt oder einem anderen Hund angelegt werden. Das Halsband existiert also auch ohne diesen Hund weiter.
Der Hund hat ein Halsband.
Ein weiteres klassisches Beispiel ist eine Vorlesung. Eine Vorlesung besitzt Studierende.
Wird die Vorlesung abgesagt, verschwinden die Studierenden natürlich nicht. Sie besuchen einfach eine andere Veranstaltung. Die Studierenden existieren unabhängig von der Vorlesung.
Die Komposition beschreibt dagegen eine starke Teil-Ganzes-Beziehung. Hier sind die Teile vom Ganzen abhängig. Man spricht von einer Existenzabhängigkeit.
Ein Hund besitzt beispielsweise ein Herz, eine Lunge und ein Gehirn. Das Herz existiert nicht als eigenständiges Objekt weiter, wenn der Hund nicht mehr existiert. Es ist ein notwendiger Bestandteil des Hundes.
Der Hund besteht aus seinen Organen.
Ein Gebäude besteht aus Räumen.
Wird das Gebäude vollständig abgerissen, verschwinden auch seine Räume. Ein Raum ist in diesem Modell kein eigenständiges Objekt, sondern Teil genau dieses Gebäudes.
Beide Beziehungen verwenden eine durchgezogene Linie. Der Unterschied liegt ausschließlich an der Raute, die sich immer auf der Seite des Ganzen befindet.
| Beziehung | Symbol |
|---|---|
| Aggregation | ◇ (weiße Raute) |
| Komposition | ◆ (schwarze Raute) |
Aggregation und Komposition verwenden dieselbe Linienart – nur die Raute unterscheidet sie. Wer die weiße und schwarze Raute verwechselt, kehrt versehentlich die Existenzabhängigkeit um.
Auf den ersten Blick scheint die Entscheidung einfach zu sein. In der Praxis ist sie jedoch oft überraschend schwierig, denn UML beschreibt keine objektive Wahrheit – sie beschreibt ein Modell der Wirklichkeit. Je nach Blickwinkel kann dieselbe Situation unterschiedlich modelliert werden.
Ein berühmtes Gedankenexperiment aus der Philosophie verdeutlicht dieses Problem. Stell dir ein Holzschiff vor. Nach und nach werden alle Planken ausgetauscht. Irgendwann wurde jedes einzelne Brett ersetzt.
Darüber diskutieren Philosophen seit über zweitausend Jahren.
Auch bei der Modellierung stellt sich oft die Frage: Ist etwas wirklich ein notwendiger Bestandteil, oder handelt es sich lediglich um einen austauschbaren Teil?
Nehmen wir den Hund. Ist ein Halsband Bestandteil des Hundes? Natürlich nicht – es kann jederzeit entfernt oder ausgetauscht werden. Aggregation. Wie sieht es mit dem Herzen aus? Ohne Herz gibt es keinen lebenden Hund. Komposition.
Doch nicht immer ist die Entscheidung so eindeutig. Ist beispielsweise ein Mikrochip Bestandteil des Hundes, oder lediglich Zubehör? Je nach Anwendung könnten beide Modellierungen sinnvoll sein.
Wenn du zwischen Aggregation und Komposition entscheiden möchtest, hilft oft folgende Überlegung:
Kann der Teil sinnvoll weiter existieren, wenn das Ganze verschwindet?
Falls ja → Aggregation. Falls nein → Komposition. Diese Faustregel funktioniert in den meisten Modellierungssituationen sehr gut.
Eine Aggregation beschreibt eine lockere Teil-Ganzes-Beziehung („hat ein“), bei der die Teile unabhängig existieren können. Eine Komposition beschreibt dagegen eine starke Teil-Ganzes-Beziehung („besteht aus“), bei der die Teile vom Ganzen abhängig sind.
Aggregation und Komposition gehören zu den wichtigsten Beziehungen in UML-Klassendiagrammen. Beide beschreiben Teil-Ganzes-Beziehungen, unterscheiden sich jedoch in der Stärke ihrer Bindung. Während ein Hund ein Halsband hat und Studierende Teil einer Vorlesung sind, ohne von ihr abhängig zu sein (Aggregation), besteht ein Hund aus Organen und ein Gebäude aus Räumen (Komposition).
In der Praxis ist die Entscheidung jedoch nicht immer eindeutig. Wie das Gedankenexperiment des Schiffs des Theseus zeigt, hängt sie oft davon ab, wie wir ein System modellieren und welche Eigenschaften wir als wesentlich betrachten. Genau deshalb ist UML nicht nur eine technische Notation, sondern auch ein Werkzeug, um über die Struktur von Software nachzudenken.