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: ________________________

Die Klausurnote (rot) wird abwärts gerundet vergeben. Übungsnote (blau). Die Nachklausurnote (gelb) wird mit Iher Semesternote von der EDV der TFH gemittelt:

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

5,0 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): In der Übung haben Sie mit der Klasse Lehrbuch.Kreis gearbeitet. Ihre (vereinfachte) Spezifikation ist

public class Kreis { /** für dynamische Datenbehälter */

public void zeichnen();

public void bemalen();

public void verstecken();

public void wiederherstellen();

}

Schreiben Sie nun ein Hauptprogramm (kein Applet), in dem Sie die zwei (globale) Kreise mit unterschiedlichen Farben auf den Bildschirm bringen.

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

_______________________________________________________________________________________________

Aufgabe 2. (30 Punkte, 15 Min): Eine Klasse Zwei enthält zwei Referenzen (namens links und rechts) auf Objekte der Klasse Eins. In einem Programm werden zwei Objekte der Klasse Eins namens erstes und zweites erzeugt. Zeichnen Sie nun alle Objekte und Referenzen, die auf sie zeigen.

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

_______________________________________________________________________________________________

Aufgabe 3. (30 Punkte, 15 Min): Schreiben Sie die Ausgabe des folgendes Programm auf. Begründen Sie Ihre Lösung mit einem Satz.

class A { void m() { System.out.println("A"); } }

class B extends A { void m() { System.out.println("B"); } }

class C extends B { void m() { System.out.println("C"); } }

public class D {

public static void main(String[] args) {

A a = new A(); B b = new B(); C c = new C();

p(a); p(b); p(c);

a = b; p(a); p(b); p(c);

b = c; p(a); p(b); p(c);

}

private static void p(A x) {

x.m();

}

}

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

_______________________________________________________________________________________________

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 Es gibt Java-Programme, die auch ohne einen Interpreter ausgeführt werden können.

( ) Falsch

Grund:

( ) Richtig Auch ein Konstruktor kann Ausnahmen auslösen.

( ) Falsch

Grund:

( ) Richtig Von einer Schnittstelle – im Gegensatz zu einer Klasse – können keine Objekte erzeugt werden.

( ) Falsch

Grund:

( ) Richtig Klassen können auf die Konsole (ins DOS-Fenster) Text ausgeben.

( ) Falsch

Grund:

( ) Richtig Menüs sind geeignet, die Reihenfolge der Ausführung im Voraus nicht festlegen zu müssen.

( ) Falsch

Grund:

( ) Richtig Eine Zuweisung verändert keine Datenobjekte, nur eine Referenz.

( ) Falsch

Grund:

( ) Richtig Es gibt Pakete, die keine Methoden enthalten, nur Klassen.

( ) Falsch

Grund:

( ) Richtig Jede Methode kann auf der rechten Seite einer Zuweisung aufgerufen werden.

( ) Falsch

Grund:

( 0 5 10 15 20 25 30 35 40 )

_______________________________________________________________________________________________

Aufgabe 5. (30 Punkte, 10 Min, ca. 5 Programmzeilen): Führen Sie notwendige Veränderungen an der folgenden Klasse durch, damit Sie die Klasse SechsmalFuellen (wie in der Übung) programmieren können:

import Lehrbuch.EinEimer;

public class FuenfmalFuellen extends EinEimer {

private void zweimalFuellen() {

fuellen(); entleeren(); fuellen(); entleeren();

}

public void start() {

zweimalFuellen(); zweimalFuellen(); fuellen(); entleeren();

}

}

_______________________________________________________________________________________________

Aufgabe 6. (30 Punkte, 15 Min): Beschreiben Sie in 3-5 Sätzen die Rolle des Stapels (stack) bei der Verarbeitung von Methodenaufrufen, insbesondere rekursiver Aufrufen. Was wird auf dem Stapel gespeichert? Was wird nicht auf dem Stapel gespeichert? Was geschieht beim Aufruf, was geschieht bei der Beendigung einer Methode?

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