Name: _____________________________________________ Matrikel-Nr.: __________
Platznummer: ______ (vom Betreuer einzeln vergeben) erster ( ) zweiter ( ) letzter ( ) Versuch
Pseudonym: __________________ (wenn Sie möchten, dass 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 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: Montag, den 8. Oktober 2001
Die Klausurnote (rot) wird abwärts gerundet. Sie ergibt mit der Übungsnote (blau) gemittelt die Endnote (gelb):
__________________________________________________________________________________________________
Aufgabe 1: Schreiben Sie die Buchstaben auf, die das folgende Programm ausgibt. Begründen Sie Ihre Lösung mit einem Satz:
class A { void x() { System.out.println("A"); } } class B extends A { void x() { System.out.println("B"); } } class C extends B { void x() { System.out.println("C"); } } public class D { private static void x(A a) { a.x(); } public static void main(String[] args) { A a = new A(); A b = new B(); A c = new C(); x(b); b = a; x(b); b = c; x(b); } }
Aufgabe 2.: Die Spezifikation der Klasse Speicher ist:
public class Speicher { // Spezifikation public void eintragen(Object element) throws EnthaltenAusnahme; // trägt element in das Speicher-Objekt ein; geprüfte Ausnahme, wenn schon enthalten public Object austragen(Object element); } // entfernt element aus dem Speicher
Schreiben Sie nun eine Klasse UnsichererSpeicher mit Hilfe von Speicher, die dieselben zwei Methoden mit derselben Funktionalität enthält, die aber ungeprüfte Ausnahmen auslösen.
Aufgabe 3: Implementieren Sie die Klasse DreiKreise mit Hilfe der Klasse lehrbuch.Kreis:
public class DreiKreise { // Spezifikation public static void bemalen(); // bemalt die drei Kreise jeweils mit ROT, GRUEN und BLAU public static void verstecken(); // versteckt die drei Kreise public static void wiederherstellen(); } // stellt die drei Kreise wieder her
Der nötige Teil der Spezifikation von lehrbuch.Kreis ist:
public class Kreis { // Spezifikation public void bemalen(lehrbuch.Farbe); // bemalt den Kreis mit Farbe.ROT, GRUEN oder BLAU public void verstecken(); // versteckt den Kreis public static void wiederherstellen(); } // stellt den Kreis wieder her
Aufgabe 4. (40 Punkte, 15 Min): Kreuzen Sie die richtigen Antworten an und geben Sie Ihre Begründung mit Stichworten (nicht länger als die Zeile) dazu. Ohne Begründung gilt Ihre Antwort als falsch.
( ) Richtig Von einer Klasse kann ein Objekt nur
dann erzeugt werden,
( ) Falsch wenn sie einen (impliziten oder
expliziten) public-Konstruktor
enthält.
Grund:
( ) Richtig Ein aktueller Parameter (eines
Methodenaufrufs) wird in Java
( ) Falsch immer in den formalen Parameter
(der Methodendefinition) kopiert.
Grund:
( ) Richtig Mit FlowLayout
muss man die Größe des Oberflächenobjekte
( ) Falsch explizit bestimmen.
Grund:
( ) Richtig Ein char-Wert kann
immer implizit nach short konvertiert werden.
( ) Falsch
Grund:
( ) Richtig Einer Java-Klasse kann Methoden und
Variablen enthalten
( ) Falsch und nichts anderes.
Grund:
( ) Richtig
Durch das Drücken eines Knopfes
können mehrere actionPerformed-Methoden
( ) Falsch ausgeführt werden.
Grund:
( ) Richtig public
int
funktion(); darf nicht als eine Anweisung funktion();
( ) Falsch aufgerufen werden.
Grund:
( ) Richtig Von einer anonymen Klasse kann nur
ein Objekt erzeugt werden.
( ) Falsch
Grund:
Aufgabe 5.: Zeichnen Sie die Datenstruktur (alle Objekte und alle Referenzen, die darauf zeigen) des folgenden Applets:
import java.awt.*; import java.awt.event.*; public class ButtonLabel extends java.applet.Applet { private Label label = new Label("Label"); public void init() { Button button = new Button("Button"); add(label); add(button); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { label.setText("Click"); } } ); } }
Kennzeichnen Sie die Referenzen, die durch eine add- oder set-Methode gesetzt werden, mit einem gestrichelten Pfeil.