Musterlösung der Nachklausur PR11 im WS'99
Aufgabe 1
// Punktanzeige.java
public class Punktanzeige {
public void punkt() { // Anzeige um eins erhöhen
System.out.println("punkt");
}
public void blinken() { // Wert 3x blinkend anzeigen
System.out.println("blinken");
}
public void zuruecksetzen() { // Anzeige auf 0 setzen
System.out.println("zuruecksetzen");
}
}
// Doppelzaehler.java
public class Doppelzaehler {
private Punktanzeige links = new Punktanzeige(), rechts = new Punktanzeige();
public void punktLinks() { links.punkt(); }
public void punktRechts() { rechts.punkt(); }
public void neuesSpiel() {
links.zuruecksetzen(); links.blinken();
rechts.zuruecksetzen(); rechts.blinken();
}
public static void main (String [] args) {
Doppelzaehler z1, z2;
z1 = new Doppelzaehler();
z2 = new Doppelzaehler();
z1.neuesSpiel();
z2.neuesSpiel();
}
}
Aufgabe 2
// TTZaehlwerk.java
class Angabewechsel extends Exception {}
class Satzende extends Exception {}
public class TTZaehlwerk {
private int punktzahl = 0;
private Punktanzeige angabe = new Punktanzeige(), gegenseite = new Punktanzeige(), hilfsref;
public void punktAngabe() throws Angabewechsel, Satzende {
// Punkt für die Angabeseite, danach ggf. Ausnahme
angabe.punkt();
punktzahlPruefen();
}
public void punktGegenseite() throws Angabewechsel, Satzende { // wie oben für die Gegenseite
gegenseite.punkt();
punktzahlPruefen();
}
public void angabewechsel() { // Vertauschen der Zähler und Blinken
hilfsref = gegenseite;
gegenseite = angabe;
angabe = hilfsref;
angabe.blinken();
gegenseite.blinken();
}
private void punktzahlPruefen()throws Angabewechsel, Satzende {
punktzahl ++;
if (punktzahl%5 == 0)
throw new Angabewechsel();
if (punktzahl == 21)
throw new Satzende();
}
}