Programmieren leicht gemacht - adäquate Modelle für den Einsatz im Unterricht/ Die Klasse Hamster

Die Klasse HamsterBearbeiten

Im objektorientierten Hamster-Modell existiert bereits eine vordefinierte Klasse Hamster, die die vier Hamster-Befehle und die drei Hamster-Testanweisungen als Methoden definiert. Hamster werden als Objekte dieser Klasse erzeugt:

class Hamster 
{
 Hamster(int r, int s, int b, int k) {...}
 void vor() {...}
 void linksUm() {...}
 void gib() {...}
 void nimm() {...}
 boolean vornFrei() {...}
 boolean maulLeer() {...}
 boolean kornDa() {...}
 …
}

Kennzeichen dieses objektorientierten Hamster-Modells ist, dass mehrere Hamster erzeugt und durch das Territorium gesteuert werden können, um gemeinsam gegebene Hamster-Aufgaben zu lösen.

Folgende Unterschiede ergeben sich hierbei zum ursprünglichen Hamster-Modell:

  • Zusätzlich zum „Standard-Hamster“ können weitere Hamster erzeugt werden: Dabei wird der Standard-Hamster immer in blau dargestellt. Werden weitere Hamster erzeugt, so erhalten diese zur Unterscheidung andere Farben. Der erste erzeugte Hamster ist rot, der zweite grün, der dritte gelb, der vierte pink und der fünfte violett. Alle weiteren Hamster haben ein graues Erscheinungsbild.
  • Hamster sind Instanzen einer Klasse „Hamster“
  • Dem Territorium wird ein Koordinatensystem zugeordnet
  • Auf einem Feld können sich mehrere Hamster befinden

Soll nun ein neuer Hamster erzeugt werden, so muss man dem Konstruktor der Klasse Hamster vier Parameter übergeben: x- und y-Koordinate des aktuellen Feldes, die Blickrichtung und die Anzahl der Körner, die dieser im Maul tragen soll. Im folgenden Beispiel wird ein Hamster erzeugt der auf dem Feld in Reihe 2 und Spalte 0 mit östlicher Blickrichtung positioniert ist und 6 Körner im Maul trägt:

Hamster paul = new Hamster(2, 0, Hamster.OST, 6);

Einem bereits definierten Hamster, zum Beispiel

Hamster alice; 

oder auch

Hamster alice = new Hamster();

kann der im Hamster-Territorium eingezeichnete Hamster mittels

alice = Hamster.getStandardHamster(); 

zugewiesen werden.