Lösung der Klausur PR15 SS'99

Aufgabe 1

public class Doppeltor {
	private Tor t1, t2;
	public Doppeltor() {t1 = new Tor(); t2 = new Tor();
		try { t1.oeffnen(); } catch (GeoeffnetAusn a) {}
		try { t2.oeffnen(); } catch (GeoeffnetAusn a) {}
	}
	public void schliessen() throws GeschlossenAusn { 	t1.schliessen(); t2.schliessen(); }
	public void oeffnen() throws GeoeffnetAusn { t1.oeffnen(); t2.oeffnen(); }
	public boolean geoeffnet() { return t1.geoeffnet() && t2.geoeffnet(); }
}

Aufgabe 2

public class Programm {
	private static Doppeltor d1 = new Doppeltor(), d2 = new Doppeltor(), d3 = new Doppeltor();
	private static void prozedur(Doppeltor d) throws GeoffnetAusn, GeschlossenAusn {
		d.schliessen(); d.oeffnen(); 
	}
	public static void main(String[] args) {
		try { prozedur(d1); prozedur(d2); prozedur(d3); }
		catch (GeoeffnetAusn ausnahme) { System.err.println ("Tor geöffnet"); }
		catch (GeschlossenAusn ausnahme) { System.err.println ("Tor geschlossen"); }
	}
}

Aufgabe 3


Aufgabe 4

· Die Ausführung der start-Methode eines Applets erfolgt über einen polymorphen Aufruf. richtig

Grund: Der Interpreter ruft start für eine Referenz vom Typ java.applet.Applet auf

· Ein Konstruktor kann alle Methoden der aktuellen Klasse und ihrer Oberklasse aufrufen. richtig

Grund: Mit this oder super (wie jede andere Methode)

· static-Methoden können nur aus static-Methoden aufgerufen werden. falsch

Grund: umgekehrt: Aus static-Methoden können nur static-Methoden aufgerufen werden.

· Wenn actionPerformed nicht überschrieben wird, geschieht beim Auftreten des Ereignisses nichts. falsch

Grund: die Methode einer Schnittstelle muß immer überschrieben (implementiert) werden, sonst kann man kein Objekt erzeugen

· Wer Zugriff auf alle private-Komponenten hat, hat Zugriff auf alle protected-Komponenten. richtig

Grund: protected-Zugriff ist aus der Klasse (wie private) und aus den Unterklassen möglich

· Eine Referenz kann sowohl durch eine Zuweisung wie auch durch Aufruf verändert werden. falsch

Grund: Der Aufruf eines Mutators verändert die Referenz nicht, nur das von ihr referierte Objekt.

· Der Benutzer (Auspräger) einer Klasse kann jede public-Methode der Oberklasse aufrufen. falsch

Grund: nicht die überschriebenen

· Die Gleichheit von Referenzen garantiert die Gleichheit der Objekte, nicht aber umgekehrt. richtig

Grund: Es gibt unterschiedliche Objekte (!=) mit gleichem Inhalt (equals)


Aufgabe 5

public class Wetter extends WetterMenue {
	private String stadt = "Berlin";
	protected void berlin() { stadt = "Berlin"; }
	protected void muenchen() { stadt = "München"; }
	protected void sonnig() { meldung(stadt + " sonnig"); }
	protected void bewoelkt() { meldung(stadt + " bewölkt"); }
	public void start() { menue(); } // nicht unbedingt nötig, da start ist in WetterMenue enthalten
}