Beziehungen

Verschiedene Objekte können miteinander in Verbindung stehen. Dazu nutzt man in den zugehörigen Klassen Attribute, die als Datentyp die Klasse des in Beziehung stehenden Objektes verwenden. Solche Attribute nennt man auch Referenzattribute.

Im Klassendiagramm werden Beziehungen (Assoziationen) durch Linien dargestellt. Eine Beschriftung sowie ein Pfeil für die Leserichtung beschreiben die Art der Beziehung. Außerdem geben Zahlen an den Enden der Linie die Kardinalität an. Sie geben an, mit wie vielen Objekten ein Objekt in Beziehung stehen kann. Im folgenden Beispiel hat eine Person z. B. einen Hund.

Der nachfolgende Quellcode zeigt, wie das Klassendiagramm implementier werden kann. Für die Beziehung zwischen einem Objekt der Klasse Person und einem Objekt der Klasse Hund benötigt die Klasse Person ein weiteres Attribut, ein Referenzattribut vom Typ Hund.

Ein Objekt kann mit einem anderen Objekt kommunizieren, indem es dessen Methoden aufruft. Dazu muss das aufrufende Objekt eine Assoziation (Beziehung) zu dem anderen Objekt besitzen. Das aufrufende Objekt benötigt eine Referenz auf das Objekt.
Der eigentliche Aufruf der Methode erfolgt mit der Punktnotation (siehe als Beispiel oben in der Datei Person, Zeile 18):
referenzattribut.methodenname()

Übungen und Aufgaben

1. Vom Code zum Klassendiagramm

Gegeben sind die folgenden Definitionen von drei Klassen.

Erstelle ein passendes Klassendiagramm mit den zugehörigen Assoziationen.

2. Vom Klassendiagramm zum Code

Gegeben ist folgendes Klassendiagramm:

Erstelle den Quelltext für die Klassen mit den geeigneten Referenzattribute. Weitere Attribute, Methoden oder Konstruktoren sind nicht notwendig.

3. Fußgängerampel


Bild von Mike Ljung auf Pixabay

Fußgängerampeln bestehen nur aus einer roten und einer grünen Leuchte. Für eine Implementierung wäre folgendes Klassendiagramm möglich. Die Klasse Ampel stellt dabei grafisch den umgebenden Kasten für die beiden Lampen dar. Sie erbt von der Klasse Rectangle. Ebenso erbt die Klasse Lampe von der Klasse Circle

Das folgende Klassendiagramm zeigt eine andere Möglichkeit die Ampel zu Implementieren. Erkläre in der Fachsprache den Unterschied zum ersten Entwurf.

Im ersten Entwurf werden die grafische Darstellung durch Vererbung erzeugt. So erweitert z. B. die Ampel die Klasse Rectangle und nutzt damit die Grafik eines Rechtecks.
Im zweiten Entwurf hat die Ampel eine Referenz auf ein Objekt der Klasse Rectangle. Um dies umzusetzen benötigt die Klasse Ampel ein weiteres Referenzattribut vom Datentyp Rectangle.

Kurz zusammengefasst: Zur grafischen Darstellung nutzt der erste Entwurf das Prinzip der Vererbung, der zweite Entwurf dagegen das Prinzip von Referenzen zu Grafikklassen.

4. Kunden und Bankkonten


Bild von Qubes Pictures auf Pixabay

Bei einer Bank können Kunden maximal zwei Bankkonten eröffnen. Bei Bankkonten mit Dispokredit kann man, teils zu horrenden Zinssätzen, sein Konto überziehen, d.h. mehr Geld abheben oder überweisen als man besitzt.

Implementiere das Klassendiagramm, erstelle geeignete Konstruktoren und teste das Programm.