Name: _____________________________________________ Matrikel-Nr.: __________

Platz: _______ erster ( ) zweiter ( ) letzter ( ) Versuch

Pseudonym: __________________ (nur wenn Sie möchten, daß Ihr Klausurergebnis im Internet veröffentlicht wird)

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. Neben der Punktzahl der einzelnen Aufgaben steht als Orientierung ein geschätzter maximaler Zeitaufwand (insg. 90 Minuten). Bei manchen Aufgaben steht als Orientierungder Anzahl der Programmzeilen in der Musterlösung. In den letzten 15 Minuten werden keine Fragen mehr beantwortet.

Klausurtermin: 10. Juli 1998 um 12:15 im Raum B-101

Die Klausurnote (rot) wird abwärts gerundet vergeben. Übungsnote (blau), Semesternote (gelb):

5 15 25 35 45 55 65 75 85 95 105 115 125 135 145 155 165 175 185 195

0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200

6,0 5,7 5,3 5,0 4,7 4,3 4,0 3,7 3,3 3,0 2,7 2,3 2,0 1,7 1,3 1,0

_______________________________________________________________________________________________

Aufgabe 1. (40 Punkte, 20 Min, ca. 8 Programmzeilen): Die Klasse Lehrbuch.ZweiEimer, mit der Sie in der Übung gearbeitet haben, hat ein Applet beinhaltet. Somit hat es ausgereicht, sie zu erweitern und ihre start-Methode zu überschreiben, um ein interpretierbares Programm zu erhalten. Die Klasse ZweiEimerOhneApplet ist ähnlich, sie beinhaltet jedoch kein Applet. Ihre Spezifikation ist

public class ZweiEimerOhneApplet { /** stellt zwei leere Datenbehälter zur Verfügung */

public static void fuellenLinks(); // der erste Eimer wird gefüllt; wenn nicht gefüllt

... // fuellenRechts, entleerenLinks, entleerenRechts ähnlich

public static void anzeigenLinks(); // der erste Eimer wird am Bildschirm angezeigt

public static void anzeigenRechts(); // der zweite Eimer wird am Bildschirm angezeigt

}

Schreiben Sie nun ein Programm, in dem Sie die zwei statischen Eimer, die diese Klasse zur Verfügung stellt, füllen und dann entleeren.

Lösung auf dem Extrablatt Nr. _________ ( 0 5 10 15 20 25 30 35 40 )

_______________________________________________________________________________________________

Aufgabe 2. (30 Punkte, 15 Min): Eine Klasse A enthält je zwei Referenzen vom Typ B und C, genannt b1, b2, c1 und c2. Sie referieren Objekte der Klassen B und C. In einem Programm werden zwei Objekte der Klasse A namens x und y erzeugt. Zeichnen Sie nun alle Objekte und Referenzen, die auf sie zeigen.

Lösung:

 

 

 

 

 

 

 

Fortsetzung auf dem Extrablatt Nr. _________ ( 0 5 10 15 20 25 30 )

Name: _____________________________________________ Matrikel-Nr.: __________

_______________________________________________________________________________________________

Aufgabe 3. (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 Java-Interpreter rufen den Konstruktor der auszuführenden Klasse auf.

( ) Falsch

Grund:

( ) Richtig Aus einem Konstruktor kann ein anderer Konstruktor aufgerufen werden.

( ) Falsch

Grund:

( ) Richtig Es gibt Ausnahmen, die ausgelöst werden können und weder im Rumpf der Methode aufgefangen

( ) Falsch noch im Profil der Methode aufgeführt werden müssen (und der Compiler ist zufrieden).

Grund:

( ) Richtig An Java-Methoden können Klassen als Parameter übergeben werden.

( ) Falsch

Grund:

( ) Richtig Das Profil einer Menüprozedur (wie sie in der Veranstaltung benutzt wude) definiert,

( ) Falsch welche Rückrufprozeduren vom Menü aufgerufen werden.

Grund:

( ) Richtig Eine Zuweisung verändert das Datenobjekt an ihrer linken Seite nicht.

( ) Falsch

Grund:

( ) Richtig Jede Java-Klasse befindet sich in einem Paket.

( ) Falsch

Grund:

( ) Richtig Es gibt Klassen, die ohne den Aufruf einer ihrer Methoden etwas tun.

( ) Falsch

Grund:

( 0 5 10 15 20 25 30 35 40 )

_______________________________________________________________________________________________

Aufgabe 4. (30 Punkte, 10 Min, ca. 5-10 Programmzeilen): Sie haben in der Übung den Datenbehälter DoppelEimer implementiert; er zeigt jede Operation doppelt an. Entwickeln Sie nun eine ähnliche Datenbehälterklasse DreifachKreis. Er zeigt ihre Operationen bemalen und zeichen in drei Kreisen an. Die Spezifikation der Klasse, die Sie dabei benutzen können, lautet:

public class KlausurKreis { // Klasse zum Ausprägen

public void zeichnen(); // macht Kreis sichtbar

public void bemalen(); // macht Kreis farbig

}

 

 

 

 

 

 

Fortsetzung auf dem Extrablatt Nr. ________________ ( 0 5 10 15 20 25 30 )

Name: _____________________________________________ Matrikel-Nr.: __________

_______________________________________________________________________________________________

Aufgabe 5. (30 Punkte, 15 Min): Ergänzen Sie die Lücken in der folgenden Tabelle über Zugriffschutzebenen in Java:

 

Kennzeichnung

Erreichbar

Lebensdauer

¬

keine ( Definition in einer Methode)

in der Methode

±

privat

private

¯

solange ein Objekt der Klasse erreichbar ist

geschützt

®

°

"

paketweit

keine (Definition in einer Klasse)

im Paket

"

­

public

überall

²

¬

 

­

 

®

 

¯

 

°

 

±

 

²

 

( 0 5 10 15 20 25 30 )

_______________________________________________________________________________________________

Aufgabe 6. (30 Punkte, 15 Min): Schreiben Sie die Zahlenreihe auf, die das folgende Programm ausgibt. (es befindet sich in der Datei Vierte.java.) Begründen Sie Ihre Lösung mit einem Satz. Schreiben Sie die DOS-Kommandos auf, mit dem das Programm übersetzt und ausgeführt werden kann:

class Erste { void methode() { System.out.println("1"); } }

class Zweite extends Erste { void methode() { System.out.println("2"); } }

class Dritte extends Erste { void methode() { System.out.println("3"); } }

public class Vierte {

public static void main(String[] args) {

Erste erste = new Erste(); Zweite zweite = new Zweite(); Dritte dritte = new Dritte();

erste.methode(); zweite.methode(); dritte.methode();

erste = zweite; erste.methode(); zweite.methode(); dritte.methode();

erste = dritte; erste.methode(); zweite.methode(); dritte.methode();

}

}

Zahlenreihe:

                 

Begründung:

 

 

 

DOS-Kommandos:

( 0 5 10 15 20 25 30 )