Unterlagen und Hilfsmittel sind nicht zugelassen. Kommunikation während der Klausur ist nur mit dem Dozenten erlaubt, der Mißverständnisse und Unklarheiten klären kann. Schreiben Sie die Lösungen auf diese Blätter, gegebenenfalls auf ein numeriertes leeres Blatt mit Ihrem Namen; kennzeichnen Sie die Aufgabennummer eindeutig. Geben Sie alle Blätter (auch die Schmierblätter) ab. Für falsche oder nicht einleuchtende Lösungen bekommen Sie grundsätzlich keine Punkte. Wenn aber aus Ihren Notizen oder Bemerkungen ersichtlich ist, daß Ihr Gedankengang richtig war, können Sie Teilpunkte bekommen. Sie verlieren jedoch diese Möglichkeit, wenn Abschreiben oder Kommunikation während der Klausur nachgewiesen werden kann. Der Kern der Fragen wurde kursiv gesetzt. Bei manchen Aufgaben steht als Orientierungder Anzahl der Programmzeilen in der Musterlösung. In den letzten 15 Minuten werden keine Fragen mehr beantwortet. Die Aufgaben sind ungefähr gleich aufwendig und sind 40 Punkte wert.

Die Klausurnote (rot) wird abwärts gerundet. Sie ergibt mit der Übungsnote (blau) gemittelt die Endnote (gelb):


Aufgabe 1. (min. 10, max. 26 Programmzeilen): Gegeben ist die Spezifikation der Datenbehälterklasse Tor:

public class Tor {
	public void schliessen() throws GeschlossenAusn;
	public void oeffnen() throws GeoeffnetAusn;
	public boolean geoeffnet();
}

Schreiben Sie nun eine (nicht-tolerante) Datenbehälterklasse Doppeltor mit denselben drei Methoden, die aber zwei Tor-Objekte gleichzeitig bedienen. Während in der Klasse Tor nichts darüber gesagt wird, ob ein neu erzeugtes Tor geöffnet oder geschlossen ist, sollen Ihre Doppeltor-Objekte beide Tore geöffnet erzeugen (try-catch im Konstruktor). Die Methode geoeffnet soll dann true ergeben, wenn beide Tore offen sind (Operator &&).


Aufgabe 2. (min. 11, max. 19 Programmzeilen): Schreiben Sie ein Hauptprogramm mit drei globalen Doppeltor-Objekten (aus der vorherigen Aufgabe 1) und einer Prozedur. Diese öffnet das Doppeltor, das in ihrem Parameter angegeben wurde, und schließt es dann wieder. Rufen Sie die Prozedur mit den drei Doppeltor-Objekten auf.


Aufgabe 3.: Zeichnen Sie die Datenstruktur des Programms aus der Aufgabe 2. (alle Objekte und alle Referenzen, die darauf zeigen)


Aufgabe 4. (40 Punkte, 15 Min): Kreuzen Sie die richtigen Antworten an und geben Sie Ihre Begründung mit Stichworten dazu. Ohne Begründung gilt Ihre Antwort als falsch.

( ) Richtig Die Ausführung der start-Methode eines Applets erfolgt über einen polymorphen Aufruf.

( ) Falsch

Grund:

( ) Richtig Ein Konstruktor kann alle Methoden der aktuellen Klasse und ihrer Oberklasse aufrufen.

( ) Falsch

Grund:

( ) Richtig static-Methoden können nur aus static-Methoden aufgerufen werden.

( ) Falsch

Grund:

( ) Richtig Wenn die Methode actionPerformed der Schnittstelle ActionListener nicht überschrieben wird,

( ) Falsch geschieht beim Auftreten des registrierten Ereignisses nichts (die leere Methode wird ausgeführt).

Grund:

( ) Richtig Wer Zugriff auf alle private-Komponenten hat, hat Zugriff auf alle protected-Komponenten.

( ) Falsch

Grund:

( ) Richtig Eine Referenz kann sowohl durch eine Zuweisung wie auch durch Aufruf eines Mutators

( ) Falsch für diese Referenz verändert werden.

Grund:

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

( ) Falsch

Grund:

( ) Richtig Die Gleichheit von Referenzen (Operator ==) garantiert die Gleichheit der Objekte

( ) Falsch (Methode equals), nicht aber umgekehrt.

Grund:


Aufgabe 5. (min. 8, max. 18 Programmzeilen): Die aufgeschobene Menüklasse WetterMenue enthält vier Menüpunkte: "sonnig", "bewölkt", "Berlin" und "München" für die vier aufgeschobenen Rückrufprozeduren sonnig, bewoelkt, berlin und muenchen. Schreiben Sie ein einfaches Menüprogramm, das für die zuletzt ausgewählte Stadt (Gedächtnis vom Typ String) das ausgewählte Wetter über die Methode meldung ausgibt.