Nach dieser Lektion kannst du
Bisher haben wir einzelne Klassen betrachtet. In echten Softwaresystemen arbeiten Klassen jedoch fast immer zusammen. Sie kommunizieren miteinander, tauschen Informationen aus oder rufen Methoden anderer Klassen auf. Diese Beziehungen werden im Klassendiagramm dargestellt.
Die einfachste Beziehung ist die Assoziation. Eine Assoziation bedeutet: Zwei Klassen stehen in einer allgemeinen Beziehung oder treten gemeinsam in einer Situation auf. Dabei muss zunächst keine Richtung angegeben werden.
Zwei Hunde können miteinander spielen oder raufen. Hier besteht also eine Beziehung zwischen zwei Objekten derselben Klasse.
Man spricht von einer Selbstassoziation, da eine Klasse mit sich selbst verbunden ist.
Auch unterschiedliche Klassen können miteinander in Beziehung stehen.
Die Aussage lautet lediglich: Ein Hund und ein Kind können miteinander spielen. Welche Klasse dabei „aktiver“ ist, spielt zunächst keine Rolle.
Manchmal ist klar erkennbar, dass eine Klasse eine andere verwendet oder mit ihr in einer festen Beziehung steht. Dann ergänzt man die Assoziation um einen Pfeil.
Jeder Hund kennt dauerhaft seinen Besitzer.
Der Hund führt hier die Aktion aus (er kennt jemanden), der Besitzer ist lediglich das Ziel dieser Beziehung. Man spricht deshalb von einer gerichteten Assoziation.
Sowohl die allgemeine als auch die gerichtete Assoziation verwenden eine durchgezogene Linie und – nur bei gerichteten Assoziationen – einen normalen, ausgefüllten Pfeilkopf. Nicht zu verwechseln mit Vererbung (hohles Dreieck) oder Realisierung (gestrichelte Linie + hohles Dreieck).
Neben der Assoziation gibt es noch eine weitere Beziehung: die Abhängigkeit. Sie wird häufig mit einer Assoziation verwechselt, besitzt jedoch eine andere Bedeutung.
Eine Abhängigkeit bedeutet: Eine Klasse verwendet eine andere Klasse nur vorübergehend. Deshalb wird sie mit einer gestrichelten Linie und einem normalen Pfeilkopf dargestellt.
Der Hund wird beim Tierarzt behandelt – aber nur kurzzeitig, nicht dauerhaft.
Eine Abhängigkeit entsteht beispielsweise, wenn eine andere Klasse als Methodenparameter verwendet wird, als Rückgabewert auftaucht, oder innerhalb einer Methode kurzzeitig benutzt wird. Die Klasse speichert dieses Objekt jedoch nicht dauerhaft:
+untersuchen(tierarzt: Tierarzt)Da der Hund seinen Besitzer dauerhaft kennt, kann der Besitzer als Attribut gespeichert werden:
-besitzer : BesitzerDer Datentyp eines Attributs ist hier eine andere Klasse. Das ist einer der häufigsten Gründe für eine Assoziation im Klassendiagramm.
Assoziation und Abhängigkeit werden oft durcheinandergebracht. Die entscheidende Frage lautet: Wird das Objekt dauerhaft gespeichert (meist als Attribut) oder nur kurzzeitig verwendet (meist als Parameter)? Im ersten Fall ist es eine Assoziation, im zweiten eine Abhängigkeit.
| Assoziation | Abhängigkeit |
|---|---|
| Dauerhafte Beziehung | Vorübergehende Verwendung |
| Meist als Attribut gespeichert | Meist Parameter oder lokale Variable |
| Durchgezogene Linie | Gestrichelte Linie |
| Beschreibt „kennt“ oder „besitzt“ | Beschreibt „verwendet kurzzeitig“ |
Eine Assoziation beschreibt eine dauerhafte Beziehung zwischen zwei Klassen und wird mit einer durchgezogenen Linie dargestellt. Eine Abhängigkeit (Dependency) beschreibt dagegen nur eine vorübergehende Verwendung einer Klasse und wird deshalb mit einer gestrichelten Linie dargestellt.