© 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