1.6 Kommunikation zwischen Objekten

Die Klasse Roboter bringt verschiedene Fähigkeiten – Methoden – mit, mit deren Hilfe wir einen Roboter auf beliebigen Spielbrettern mit wechselnden Aufgabenstellungen einsetzen können. Für jedes neue Szenario müssen wir dabei neu festlegen, was der jeweilige Roboter in welcher Reihenfolge tun soll.

Nachrichten schicken

Bei einem realen Brettspiel würde der Spieler die Roboterfigur aus dem Spielcarton nehmen, auf das Spielbrett setzen und die jeweilige Aufgabenstellung lösen. Bei unserem virtuellen Spiel übernimmt diese Aufgabe ein Objekt vom Typ Szenario, das unter dem Objektnamen neuesSzenario zu erreichen ist.

neuesSzenario erzeugt dazu ein neues Objekt der Klasse Roboter und weist diesem den Objektnamen robi zu. Anschließend kann es robi entsprechende Nachrichten schicken und so das jeweilige Szenario lösen.

Beispiel: robi Spielbrett und Startposition mitteilen

Zunächst muss das Objekt neuesSzenario dem Objekt robi mitteilen, auf welchem Spielbrett er eingesetzt wird und wie die Koordinaten seiner Startposition lauten.

img/1_13_UML_Kommunikationsdiagramm_erzeugeRobi.svg
Abb. 1-13: UML-Kommunikationsdiagramm: robi ein Spielbrett und eine Startposition zuweisen

Als erstes (Sequenznummer 1) fordert das Objekt neuesSzenario das Objekt robi auf, seine Methode starteAufFeld(x:int, y:int, spiel­brett: Spielbrett) auszuführen. Dabei übergibt es der Methode die drei Werte 1, 2 und ausgewaehltesSpielbrett, die gemäß ihrer Reihenfolge den Parametern x, y und spielbrett zugwiesen werden.

Attribute und Fähigkeiten
Abb. 1-14: robi wurde ein Spielbrett und eine Startposition zugewiesen

Beispiel: robi steuern

Anschließend steuert das Objekt neuesSzenario den Roboter robi, indem es entsprechende Methoden aufruft.

img/1_15_UML_Kommunikationsdiagramm_steuereRobi.svg
Abb. 1-15: UML-Kommunikationsdiagramm: robi über das Spielbrett steuern
Attribute und Fähigkeiten
Abb. 1-16: neuesSzenario hat robi ans Ziel gesteuert

Objekte kommunizieren mit Hilfe von Nachrichten. Dabei fordert der Sender den Empfänger auf, eine seiner Methoden auszuführen. Diese Anweisung darf – wie generell jede Anweisung – nur innerhalb einer Methode formuliert werden. Der Sender benötigt daher eine Methode, die die entsprechenden Methodenaufrufe enthält.

Merke: Nachrichten