Das Spiel-Objekt
Ein Objekt, das die Figuren steuert
Das Spiel nur über einzelne Variablen zu steuern, ist mühsam und unübersichtlich.
Besser ist ein eigenes Spiel-Objekt, das die Übersicht behält.
Es muss dazu die beiden Figuren f1 und f2 kennen,
außerdem die beiden Figuren, die gerade per Münzwurf bestimmt wurden, und
den Spieler, der aktuell am Zug ist.
Ein passendes Objektdiagramm sieht so aus:
Das Spiel-Objekt besitzt mehrere Attribute, deren Werte
Referenzen auf andere Objekte sind. Solche Attribute nennt man
Referenzattribute. Über sie kann das Spiel-Objekt
die Methoden und Attribute der Figuren benutzen.
Aufgabe 1 - Objektdiagramm lesen
Beschreibe anhand des Objektdiagramms den dargestellten Spielzustand: Wo stehen die Figuren? Welche Figuren wurden per Münzwurf bestimmt?
kennt- und hat-Beziehungen
Wenn ein Objekt über ein Referenzattribut Zugriff auf ein anderes Objekt hat, spricht man von einer Beziehung. Man unterscheidet zwei Arten:
- Bei einer hat-Beziehung ist das andere Objekt ein
Bestandteil und wird meist vom Objekt selbst erzeugt. Das Spiel
erzeugt die Figuren
f1undf2– also eine hat-Beziehung. - Bei einer kennt-Beziehung kennt ein Objekt ein anderes nur, das andere existiert aber unabhängig. Die aktuellen Figuren werden nicht neu erzeugt, sondern verweisen auf bereits vorhandene Figuren – also eine kennt-Beziehung.
Im Klassendiagramm stellt man Beziehungen als Pfeile dar. Die hat-Beziehung wird zusätzlich mit einer ausgefüllten Raute markiert:
Genaueres zu Beziehungen findest du im Fachkonzept Beziehungen.
Grundgerüst der Klasse Spiel
Wir beginnen mit den Attributen. Die Figuren f1 und f2
werden vom Spiel erzeugt. Die aktuellen Figuren verweisen zunächst auf vorhandene
Figuren. Der aktuelle Spieler steht zu Beginn noch nicht fest – sein Wert ist
deshalb null, das Attribut hat also den nullbaren Typ
Figur?.
class Spiel {
val f1 = Figur("blau", 0, 0) // hat-Beziehung: vom Spiel erzeugt
val f2 = Figur("rot", 4, 4) // hat-Beziehung: vom Spiel erzeugt
var aktuelleFigur1: Figur = f1 // kennt-Beziehung: verweist auf vorhandene Figur
var aktuelleFigur2: Figur = f1 // kennt-Beziehung
var aktuellerSpieler: Figur? = null
}
Aufgabe 2 - Grundgerüst anlegen
Lege in einem BlueJ-Projekt die Klasse Figur aus dem vorigen
Abschnitt und die Klasse Spiel mit den obigen Attributen an.
Erzeuge ein Spiel-Objekt und überprüfe mit dem Objektinspektor,
dass die beiden Figuren erzeugt wurden und aktuellerSpieler
den Wert null hat.