4.1 Beziehungen zwischen Klassen
Eine objektorientierte Software besteht aus verschiedenen Objekten, die gemeinsam die an das Programm gestellten Anforderungen erfüllen. Dazu nutzen Objekte häufig Funktionalitäten – in der Regel Methoden – anderer Objekte.
Um ein anderes Objekt ansprechen zu können, merkt sich ein Objekt dessen Adresse mit Hilfe eines Attributs. Als Attributtyp wird die Klasse des anderen Objekts festgelegt. Mit Hilfe des Attributnamens kann das andere Objekt dann angesprochen werden.
4.1.1 Darstellung von Beziehungen im UML-Klassendiagramm
Jedes Attribut, dessen Typ wiederum eine Klasse ist, erlaubt den Kontakt zu einem entsprechenden Objekt. Im Klassendiagramm wird eine solche Beziehung durch eine Linie veranschaulicht, die die beteiligten Klassen verbindet. Die UML bezeichnet diese Beziehung als Assoziation. Die Objekte der verbundenen Klassen kommunizieren über diese Assoziation miteinander. Eine offene Pfeilspitze (>) an einem oder beiden Enden der Verbindungslinie gibt die Zugriffsrichtung (Navigationsrichtung) an. Objekte der Klasse am jeweils anderen Ende dürfen dann auf Objekte der Klasse, auf die die Pfeilspitze zeigt, zugreifen. Ein Kreuz (X) schließt den Zugriff auf Objekte der entsprechenden Seite durch Objekte der anderen Seite explizit aus.
Beispiel
Ein Objekt der Klasse SzenarioAufgabe3_2 besitzt das Attribut robi. Mit Hilfe des Attributnamens robi kann das Objekt das ihm zugewiesene Roboter-Objekt ansprechen und durch den Aufruf entsprechender öffentlicher Methoden steuern.
Ein Roboter-Objekt besitzt das Attribut position. Mit Hilfe des Attributnamens position kann das Objekt auf das ihm zugewiesene Objekt der Klasse Position zugreifen und zum Beispiel nach dem Spielbrett-Objekt fragen, auf dem sich der Roboter gerade befindet.
Ein Objekt der Klasse Position besitzt das Attribut spielbrett. Mit Hilfe des Attributnamens spielbrett kann das Objekt auf das ihm zugewiesene Objekt der Klasse Spielbrett zugreifen und es zum Beispiel fragen, wie breit es ist.
4.1.2 Unidirektionale vs. bidirektionale Assoziation
Welche Art von Assoziation in einem Modell gewählt wird, hängt von den jeweiligen Anforderungen ab.
Beispiel
-
Von einem Versicherungsvertrag ausgehend soll es möglich sein, direkt auf das versicherte Auto zuzugreifen.
Falls dennoch die Frage aufkommt, welcher Versicherungsvertrag zu einem bestimmten Auto gehört, muss bei jedem einzelnen Versicherungsvertrag geprüft werden, ob diesem das jeweilige Auto zugeordnet ist. Die Suche endet bei einem Treffer oder wenn alle Autos überprüft sind.
-
Von einem Auto ausgehend soll es möglich sein, direkt auf den jeweiligen Versicherungsvertrag zuzugreifen.
Falls dennoch die Frage aufkommt, welches Auto zu einem bestimmten Versicherungsvertrag gehört, muss bei jedem einzelnen Auto geprüft werden, ob diesem der jeweilige Versicherungsvertrag zugeordnet ist. Die Suche endet bei einem Treffer oder wenn alle Versicherungsverträge überprüft sind.
-
Die in Teilaufgabe a) und b) genannten Anforderungen sollen beide möglich sein.