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();
    }
}