Nach dieser Lektion kannst du
Bisher haben wir Beziehungen zwischen Klassen kennengelernt. Oft reicht es jedoch nicht aus zu sagen, dass zwei Klassen miteinander verbunden sind. Häufig möchten wir zusätzlich festlegen, wie viele Objekte beteiligt sein dürfen, welche Anzahl mindestens erforderlich ist und welche Anzahl maximal erlaubt ist.
Diese Angaben nennt man Multiplizitäten oder Kardinalitäten. Sie werden an den Enden einer Beziehung notiert.
Die wichtigste Unterscheidung ist die zwischen einer Kann-Beziehung und einer Muss-Beziehung. Der entscheidende Unterschied liegt darin, ob 0 erlaubt ist oder nicht.
Beginnt eine Multiplizität mit 0, ist die Beziehung optional. Das Objekt kann diese Beziehung besitzen, muss es aber nicht.
Ein Hund kann Spielzeug besitzen.
0..*
Ein Hund darf kein Spielzeug, ein Spielzeug oder beliebig viele Spielzeuge besitzen. Alle diese Situationen sind gültig.
Beginnt eine Multiplizität dagegen mit 1, muss mindestens ein Objekt vorhanden sein.
Jeder Hund besitzt genau einen Mikrochip.
1
Ein Hund ohne Mikrochip wäre nach diesem Modell nicht zulässig.
| Multiplizität | Bedeutung | Hund-Beispiel |
|---|---|---|
| 1 | genau eins | Jeder Hund besitzt genau einen Mikrochip. |
| 0..1 | kein oder eins | Ein Hund hat möglicherweise einen Maulkorb. |
| * | beliebig viele | Ein Hund kennt beliebig viele Hunde. |
| 0..* | kein oder beliebig viele | Ein Hund besitzt beliebig viele Spielzeuge. |
| 1..* | mindestens eins | Ein Schlittenhund gehört mindestens zu einem Gespann. |
| 2 | genau zwei | Ein Hund hat genau zwei Augen. |
| 2..5 | zwei bis fünf | Eine Trainingsgruppe besteht aus zwei bis fünf Hunden. |
Besonders häufig sieht man das Sternchen: *. Es bedeutet beliebig viele. Genauer geschrieben lautet diese Multiplizität 0..*. Beide Schreibweisen bedeuten also exakt dasselbe – das Sternchen ist lediglich die kürzere Notation.
Vielleicht kennst du aus Entity-Relationship-Modellen (ER-Modellen) bereits Kardinalitäten wie 1 und n. UML geht hier deutlich weiter: Du kannst beliebige Wertebereiche angeben, zum Beispiel 2, 3..8 oder sogar 0. Dadurch lassen sich sehr viel präzisere Modellierungsregeln formulieren.
| ER-Modell | UML-Klassendiagramm |
|---|---|
| Meist nur 1 oder n | Beliebige Wertebereiche (0, 2, 3..8, 0..*, …) |
| Kardinalität beschreibt nur Tabellenbeziehungen | Multiplizität beschreibt Objektbeziehungen inkl. Aggregation/Komposition |
| Typisch für Datenbankmodellierung | Typisch für objektorientierte Softwarearchitektur |
Für Fachinformatiker:innen ist das relevant, weil ihr ER-Modelle meist aus dem Datenbank-Unterricht kennt – die Notation sieht ähnlich aus, UML ist dabei aber deutlich ausdrucksstärker.
Auch Teil-Ganzes-Beziehungen besitzen Multiplizitäten. Diese machen häufig deutlich, ob eine Existenzabhängigkeit vorliegt.
Ein Hund besitzt Spielzeuge:
0..*
Ein Hund kann kein, ein oder viele Spielzeuge besitzen. Verschwindet der Hund, existieren die Spielzeuge weiterhin – sie könnten einem anderen Hund gehören. Die Spielzeuge sind also existenzunabhängig.
Ein Hund besteht aus genau einem Herzen:
1
Das Herz gehört genau zu diesem Hund. Existiert der Hund nicht mehr, existiert in diesem Modell auch dieses Herz nicht mehr als eigenständiges Objekt. Das Herz ist existenzabhängig.
Ein weiteres Beispiel: Ein Gebäude besteht aus mindestens einem Raum (Multiplizität 1..*). Jeder Raum gehört genau zu einem Gebäude. Die Räume sind Bestandteil des Gebäudes und besitzen in diesem Modell keine eigenständige Existenz.
Es ist wichtig zu verstehen, dass Multiplizität und Existenzabhängigkeit zwei unterschiedliche Konzepte sind. Eine Komposition bedeutet nicht automatisch, dass überall eine 1 stehen muss. Beispielsweise könnte ein Gebäude während der Planung noch keine Räume besitzen (Multiplizität 0..*).
Die Beziehung bleibt trotzdem eine Komposition, wenn Räume ausschließlich zu diesem Gebäude gehören und ohne das Gebäude keine eigenständige Bedeutung besitzen. Die Raute beschreibt also die Art der Beziehung, während die Multiplizität beschreibt, wie viele Objekte beteiligt sein dürfen. Beides ergänzt sich.
Multiplizität (wie viele?) und Existenzabhängigkeit (kann der Teil ohne das Ganze existieren?) beantworten unterschiedliche Fragen. Eine Komposition mit der Multiplizität 0..* ist immer noch eine Komposition – die Raute allein entscheidet über die Existenzabhängigkeit, nicht die Zahl daneben.
Multiplizitäten legen fest, wie viele Objekte an einer Beziehung beteiligt sein dürfen. Beginnt eine Multiplizität mit 0, handelt es sich um eine Kann-Beziehung. Beginnt sie mit 1, besteht eine Muss-Beziehung. UML erlaubt dabei beliebige Wertebereiche und ist dadurch deutlich flexibler als viele andere Modellierungssprachen.
Multiplizitäten ergänzen Beziehungen um wichtige Informationen über Anzahl und Verpflichtung. Sie beschreiben, ob eine Beziehung optional oder verpflichtend ist und wie viele Objekte maximal beteiligt sein dürfen. Im Gegensatz zu ER-Modellen können in UML beliebige Wertebereiche angegeben werden – von 0 über 2..5 bis hin zu 0..*. Gemeinsam mit Aggregationen und Kompositionen ermöglichen Multiplizitäten eine sehr präzise Beschreibung realer Zusammenhänge und gehören deshalb zu den wichtigsten Werkzeugen beim Entwurf von UML-Klassendiagrammen.