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: Donnerstag, den 29. Januar 1999

Die Klausurnote (rot) wird abwärts gerundet vergeben. Sie ergibt mit der Übungsnote (blau) gemittelt die Endnote (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

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


Aufgabe 1. (30 Punkte, 20 Min, ca. 15 Programmzeilen): In der Übung haben Sie mit der Klasse lehrbuch.Kreis gearbeitet. Die Spezifikation einer ähnlichen Klasse aus dem Paket lehrbuch ist

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

public void darstellen(final int posX, final int posY) throws KoordAusn; // Parameter: Koordinaten

public void faerben(final lehrbuch.Farbe farbe);

public lehrbuch.Farbe farbe();

}

Schreiben Sie nun ein Hauptprogramm (kein Applet), in dem Sie drei globale (d.h. außerhalb der Methoden vereinbarte) Quadrat-Objekte mit unterschiedlichen Farben auf den Bildschirm (mit Koordinaten Ihrer Wahl) bringen.

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


Aufgabe 2. (30 Punkte, 15 Min, ca. 9 Programmzeilen): Eine Klasse Hallo enthält zwei öffentliche Referenzen namens oben und unten auf Objekte der Klasse Spitze. Schreiben Sie nun ein Programm mit zwei Objekten der Klasse Hallo namens hallo1 und hallo2, in dem Sie die Methode spitze für alle Objekte der Klasse Spitze aufrufen.

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


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

Lösung:

( 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 Ein Konstruktor kann den Namen der Oberklasse tragen.

( ) Falsch

Grund:

( ) Richtig Es gibt Multibehälter, die Datenelemente unterschiedlicher Klassen aufnehmen können.

( ) Falsch

Grund:

( ) Richtig Ein Applet kann keine andere Methoden haben, als was sie

( ) Falsch von der Klasse java.applet.Applet geerbt hat.

Grund:

( ) Richtig Um eine Methode polymorph aufrufen zu können, ist es notwendig,

( ) Falsch daß alle Unterklassen diese Methode überschreiben.

Grund:

( ) Richtig Eine Zuweisung kann keine Objekte verändern, nur eine Referenz.

( ) Falsch

Grund:

( ) Richtig Der Typ einer Variable kann zur Laufzeit nicht verändert werden.

( ) 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. 4 Programmzeilen): Erweitern Sie die Schnittstelle lehrbuch.kapitel8.Sack (es ist nicht notwendig, sie zu kennen) um Operationen, mit denen die Summe und die Differenz zweier Säcke errechnet werden kann.

Lösung:

( 0 5 10 15 20 25 30 )


Aufgabe 6. (30 Punkte, 15 Min): Beschreiben Sie in 3-5 Sätzen die Rolle des Stapels (stack) des Laufzeitsystems bei der Verarbeitung von Methodenaufrufen, insbesondere rekursiver Aufrufen. Was alles 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 )