© APSIS GmbH
, Polling,
2000
Statischer Datenbehälter aus der Bibliothek für das Lehrbuch Programmieren mit Java
Dokumentation
Programmtext mit Dokumentation
package lehrbuch;
public class Kreis {
public final static Farbe ROT = Farbe.ROT;
public final static Farbe GRUEN = Farbe.GRUEN;
public final static Farbe BLAU = Farbe.BLAU;
public static Farbe rot() {
return ROT;
}
public static Farbe gruen() {
return GRUEN;
}
public static Farbe blau() {
return BLAU;
}
public Kreis() {
kreisSichtbar = false;
kreisFarbig = false;
kreisPos = UNSICHTBAR;
}
public Kreis(final Farbe farbe) {
this();
zeichnen();
bemalen(farbe);
}
public void zeichnen() throws MehrAlsNeunFehler {
if (kreisPos == UNSICHTBAR) // neue Position zuordnen
if (naechstePos == LETZTE_POSITION)
throw new MehrAlsNeunFehler();
else {
naechstePos++;
kreisPos = naechstePos;
}
// Kreis hat eine Position
if (!kreisSichtbar) { // farblos zeichnen
kreisSichtbar = true;
Anim.kreisZeichnen(kreisPos);
} // wenn sichtbar, passiert nichts
}
public class MehrAlsNeunFehler extends Error {}
public void bemalen() {
try {
naechsteFarbe = (Farbe)naechsteFarbe.naechster();
}
catch (BereichAusnahme ausnahme) {
naechsteFarbe = (Farbe)naechsteFarbe.erster();
}
bemalen(naechsteFarbe);
}
public void bemalen(final Farbe farbe) {
kreisFarbig = true;
kreisFarbe = farbe;
if (kreisSichtbar)
Anim.kreisZeichnen(kreisPos, kreisFarbe.pos());
}
public void verstecken() {
kreisSichtbar = false;
Anim.kreisVerstecken(kreisPos);
}
public void wiederherstellen() {
if (kreisPos != UNSICHTBAR) {
kreisSichtbar = true;
if (kreisFarbig)
Anim.kreisZeichnen(kreisPos, kreisFarbe.pos());
else
Anim.kreisZeichnen(kreisPos);
}
}
// Informator
public Farbe inhalt() throws KeineFarbe { // Ergebnis: ROT, GRUEN oder BLAU
if (kreisFarbig)
return kreisFarbe;
else
throw new KeineFarbe();
}
// Kommunikationsmethoden:
public static void meldung(final String text) {
Anim.meldung(text);
}
public void farbWahl() {
Farbe farbe = ROT;
farbe = (Farbe)farbe.auswahl();
bemalen(farbe);
}
public void farbEingabe() {
Farbe farbe = ROT;
try {
farbe = (Farbe)farbe.eingabe(
);
} catch (BereichAusnahme ausnahme) {
farbe = (Farbe)farbe.auswahl();
}
bemalen(farbe);
}
// private Teile:
// Konstanten:
private static final int UNSICHTBAR = 0; // erste Position
private static final int OBEN_LINKS = 1;
private static final int OBEN_MITTE = 2;
private static final int OBEN_RECHTS = 3;
private static final int MITTE_LINKS = 4;
private static final int MITTE_MITTE = 5;
private static final int MITTE_RECHTS = 6;
private static final int UNTEN_LINKS = 7;
private static final int UNTEN_MITTE = 8;
private static final int UNTEN_RECHTS = 9;
private static final int LETZTE_POSITION = UNTEN_RECHTS;
// aktualisieren, falls neue Positionen hinzugefügt werden
// Objektkomponenten:
private Farbe kreisFarbe;
private boolean kreisSichtbar;
private boolean kreisFarbig;
private int kreisPos; // Position am Bildschirm
// Klassenkomponenten:
private static int naechstePos = UNSICHTBAR;
// Position des letzten angezeigten Kreises
private static Farbe naechsteFarbe = Farbe.ROT;
}
package lehrbuch;
public class Farbe extends Aufz {
public static final Farbe ROT = new Farbe();
public static final Farbe GRUEN = new Farbe();
public static final Farbe BLAU = new Farbe();
}
© APSIS GmbH
, Polling,
2000