Klausur Pr11 SS' 01

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. Schrei­ben Sie die Lösungen auf leere nummerierte Blätter mit Ihrem Namen; kennzeichnen Sie die Aufgabennummer eindeutig. Geben Sie alle Blätter (auch die Schmier­blät­ter) ab. Für falsche oder nicht einleuchtende Lösungen be­kommen Sie grund­sätzlich kei­ne Punk­te. Wenn aber aus Ihren Notizen oder Be­merkungen er­sicht­lich ist, dass Ihr Gedankengang richtig war, kön­nen Sie Teilpunkte bekommen. Sie ver­lie­ren jedoch diese Möglichkeit, wenn Abschreiben oder Kommu­ni­ka­ti­on wäh­rend der Klau­­sur 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 beant­wor­tet..

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 Stich­worten 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 para­me­tri­sier­ten 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
}