Unterlagen und Hilfsmittel sind nicht zugelassen. Kommunikation während der Klausur ist nur mit dem Dozenten erlaubt, der Missverständnisse und Unklarheiten klären kann. Schreiben Sie die Lösungen auf leere nummerierte Blätter 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, dass 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.
In den letzten 15 Minuten werden keine Fragen mehr beantwortet..Klausurtermin: 11. Juli 2000
_______________________________________________________________________________________________
Aufgabe 1: Gegeben ist die Spezifikation der Datenbehälterklasse Anschluss, um Telefonanrufe zu verwalten:
public class Anschluss { public void anrufen() throws BelegtAusn; public void auflegen(); public boolean belegt(); public int einheit(); }
Schreiben Sie nun eine (nicht-tolerante) Datenbehälterklasse ISDNAnschluss mit denselben vier Methoden, die aber zwei Anschluss-Objekte gleichzeitig bedienen. Ein ISDN-Anschluss meldet dann „belegt“, wenn beide Leitungen belegt sind; daher können Sie anrufen, wenn eine der Leitungen frei ist. Die Anzahl der vertelefonierten Einheiten eines ISDN-Anschlusses ist die Summe der Einheiten .
Aufgabe 2: Schreiben Sie ein Hauptprogramm (aus der vorherigen Aufgabe 1) und einer Prozedur mit einem ISDNAnschluss-Parameter; testen Sie darin alle Funktionalitäten der Klasse ISDNAnschluss.
Aufgabe 3.: Zeichnen Sie die Datenstruktur eines Programms mit zwei Knöpfen und einem gemeinsamen Lauscher (alle Objekte und alle Referenzen, die darauf zeigen). Schreiben Sie zu den Referenzen ihren Namen, zu den Objekten die Namen ihre Klassen (u.U. ihrer Oberklassen) hin.
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 main-Methode
erfolgt über einen polymorphen Aufruf.
( ) Falsch
Grund:
( ) Richtig
Es gibt keine Klassen ohne Konstruktor.
( ) Falsch
Grund:
( ) Richtig
Eine Klasse hat entweder nur
static-Methoden
oder keine static-Methoden.
( ) Falsch
Grund:
( ) Richtig
Die Methode
actionPerformed kann in derselben Klasse implementiert werden,
( ) Falsch die die
start-Methode
enthält und mit
appletviewer ausgeführt wird.
Grund:
( ) Richtig
Eine for-Schleife
kann endlos laufen, eine Zählschleife nicht.
( ) Falsch
Grund:
( ) Richtig
Durch den Aufruf eines Operators kann ein Objekt nicht verändert werden,
( ) Falsch höchstens eine seiner Datenkomponenten.
Grund:
( ) Richtig
Java-Objekte können das Ende des Blocks, in dem sie erzeugt wurden, überleben.
( ) Falsch
Grund:
( ) Richtig
In einer char-Variable
kann ein Ganzzahlwert gespeichert werden.
( ) Falsch
Grund:
Aufgabe 5.: Implementieren Sie die folgende Schnittstelle als eine Hüllenklasse für boolean mit einem parametrisierten Konstruktor:
interface Log { public void konjunktion(final Log wert); // logisches 'und', ähnlich wie &= public void disjunktion(final Log wert); // logisches 'oder', ähnlich wie |= public void ausgeben(); // auf der Konsole }