Das ist die Aufgabe: der Code ist die Lösung aber ich verstehe es nicht.
Implementieren Sie einen Aufzählungstyp Besitzer für die möglichen Besitzer einer Spielfeldzelle. Schreiben Sie eine neue Klasse SpielfeldZeileEnum, die statt int-Werten Referenzen auf Besitzer in den Zellen ablegt. Auch an der Schnittstelle (also den öf- fentlichen Methoden) der neuen Klasse SpielfeldZeileEnum sollen an den richtigen Stellen statt int-Werten Besitzer-Referenzen übergeben und geliefert werden.
Kann die Methoden gibBesitzer erklären?
Implementieren Sie einen Aufzählungstyp Besitzer für die möglichen Besitzer einer Spielfeldzelle. Schreiben Sie eine neue Klasse SpielfeldZeileEnum, die statt int-Werten Referenzen auf Besitzer in den Zellen ablegt. Auch an der Schnittstelle (also den öf- fentlichen Methoden) der neuen Klasse SpielfeldZeileEnum sollen an den richtigen Stellen statt int-Werten Besitzer-Referenzen übergeben und geliefert werden.
Kann die Methoden gibBesitzer erklären?
Java:
class SpielfeldZeileEnum {
private Besitzer _spalte0;
private Besitzer _spalte1;
private Besitzer _spalte2;
/**
* Initialisiert eine neue SpielfeldZeile
*/
public SpielfeldZeileEnum() {
_spalte0 = Besitzer.LEER;
_spalte1 = Besitzer.LEER;
_spalte2 = Besitzer.LEER;
}
/**
* Gibt den Besitzer der angegebenen Spalte in dieser Zeile.
*
* @param spalte horizontale Position (0-2)
* @return 0 (unbesetzt), 1 (Spieler 1), 2 (Spieler 2)
*/
public int gibBesitzer(int spalte) {
Besitzer besitzer;
switch (spalte) {
case 0:
besitzer = _spalte0;
break;
case 1:
besitzer = _spalte1;
break;
case 2:
besitzer = _spalte2;
break;
default:
throw new IllegalArgumentException(String.valueOf(spalte));
}
int besitzer1 = gibBesitzer1(besitzer);
return besitzer1;
}
private int gibBesitzer1(Besitzer besitzer)
{
int besitzer1 = 0;
switch(besitzer)
{
case LEER:
besitzer1 = 0;
break;
case KREUZ:
besitzer1 = 1;
break;
case KREIS:
besitzer1 = 2;
break;
}
return besitzer1;
}
/**
* Besetze die angegebene Spalte in dieser Zeile.
*
* @param spalte horizontale Position (0-2)
* @param spieler 0 (leer), 1 (Spieler 1), 2 (Spieler 2)
*/
public void besetze(int spalte, int spieler) {
Besitzer spieler1 = Besitzer.LEER;
switch (spieler)
{
case 0:
spieler1 = Besitzer.LEER;
break;
case 1:
spieler1 = Besitzer.KREUZ;
break;
case 2:
spieler1 = Besitzer.KREIS;
break;
}
switch (spalte) {
case 0:
_spalte0 = spieler1;
break;
case 1:
_spalte1 = spieler1;
break;
case 2:
_spalte2 = spieler1;
break;
default:
throw new IllegalArgumentException(String.valueOf(spalte));
}
}
/**
* Gibt an, ob die Zeile an allen Positionen belegt ist.
*/
public boolean istVoll() {
return (_spalte0 != Besitzer.LEER) && (_spalte1 != Besitzer.LEER) && (_spalte2 != Besitzer.LEER);
}
}
class SpielfeldZeileEnum {
private Besitzer _spalte0;
private Besitzer _spalte1;
private Besitzer _spalte2;
/**
* Initialisiert eine neue SpielfeldZeile
*/
public SpielfeldZeileEnum() {
_spalte0 = Besitzer.LEER;
_spalte1 = Besitzer.LEER;
_spalte2 = Besitzer.LEER;
}
/**
* Gibt den Besitzer der angegebenen Spalte in dieser Zeile.
*
* @param spalte horizontale Position (0-2)
* @return 0 (unbesetzt), 1 (Spieler 1), 2 (Spieler 2)
*/
public int gibBesitzer(int spalte) {
Besitzer besitzer;
switch (spalte) {
case 0:
besitzer = _spalte0;
break;
case 1:
besitzer = _spalte1;
break;
case 2:
besitzer = _spalte2;
break;
default:
throw new IllegalArgumentException(String.valueOf(spalte));
}
int besitzer1 = gibBesitzer1(besitzer);
return besitzer1;
}
private int gibBesitzer1(Besitzer besitzer)
{
int besitzer1 = 0;
switch(besitzer)
{
case LEER:
besitzer1 = 0;
break;
case KREUZ:
besitzer1 = 1;
break;
case KREIS:
besitzer1 = 2;
break;
}
return besitzer1;
}
/**
* Besetze die angegebene Spalte in dieser Zeile.
*
* @param spalte horizontale Position (0-2)
* @param spieler 0 (leer), 1 (Spieler 1), 2 (Spieler 2)
*/
public void besetze(int spalte, int spieler) {
Besitzer spieler1 = Besitzer.LEER;
switch (spieler)
{
case 0:
spieler1 = Besitzer.LEER;
break;
case 1:
spieler1 = Besitzer.KREUZ;
break;
case 2:
spieler1 = Besitzer.KREIS;
break;
}
switch (spalte) {
case 0:
_spalte0 = spieler1;
break;
case 1:
_spalte1 = spieler1;
break;
case 2:
_spalte2 = spieler1;
break;
default:
throw new IllegalArgumentException(String.valueOf(spalte));
}
}
/**
* Gibt an, ob die Zeile an allen Positionen belegt ist.
*/
public boolean istVoll() {
return (_spalte0 != Besitzer.LEER) && (_spalte1 != Besitzer.LEER) && (_spalte2 != Besitzer.LEER);
}
}