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: 24. Januar 2001
_______________________________________________________________________________________________
Aufgabe 1: 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 { void
methode(Erste erste) { erste.methode(); }
public static void
main(String[] args) {
Erste erste = new Erste(); Zweite
zweite = new Zweite();
Dritte dritte = new Dritte();
Vierte vierte = new Vierte();
vierte.methode(erste); erste = zweite;
vierte.methode(erste);
erste = dritte; erste.methode();
zweite.methode(); dritte.methode();
vierte.methode(erste);
}
}
Aufgabe 2.: Finden Sie die 12 Fehler im folgenden Programm (Musterlösung einer Übungsaufgabe). Markieren Sie die Fehlerstellen mit einer Zahl (1-10) und erläutern Sie die Fehler (mit den entsprechenden Nummern) auf dem Extrablatt. Schreiben Sie auch jeweils die korrekte Programmzeile auf.
1. import javax.swing.*; 2. class Wetter extends java.applet.Applet { 3. private JLabel anzeige; private JComboBox wetter; 4. public void start() { 5. private JPanel hauptfeld = new JPanel(), rechtesFeld = new JPanel(), 6. linkesFeld = new JPanel(GridLayout(3, 1, 30, 30)); 7. wetter = new JComboBox(); wetter.addItem("sonnig"); wetter.addItem("bewölkt"); 8. JButton berlin = new JButton("Berlin"), muenchen = new JButton("München"); 9. linkesFeld.add(berlin); linkesFeld.add(muenchen); 10. anzeige = new JLabel("Wetterbericht"); 12. rechtesFeld.add(anzeige); hauptfeld.add(linkesFeld); hauptfeld.add(rechtesFeld); 13. getContentPane().add(hauptfeld); 14. Wetter lauscher = new ActionListener() { 15. public void actionPerformed() { 16. anzeige.setText(ereignis.getActionCommand() + " " + wetter); 17. } 18. }; 19. berlin.addActionListener(lauscher); muenchen.addActionListener(lauscher); 20.}
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
Jede Datenbehälterklasse muss einen Konstruktor haben.
( ) Falsch
Grund:
( ) Richtig
Ein int-Wert
kann nur explizit in ein
char-Wert
konvertiert werden.
( ) Falsch
Grund:
( ) Richtig
Für Polymorphie ist es notwendig, eine Methode zu überschreiben.
( ) Falsch
Grund:
( ) Richtig
Damit eine Methode eine Ausnahme auswirft,
( ) Falsch muss ihr Rumpf eine
throw-Anweisung
enthalten.
Grund:
( ) Richtig
Basistypen können nur
static-Methoden
haben.
( ) Falsch
Grund:
( ) Richtig
Alle Pakete der benutzten Standardklassen müssen im Programm genannt werden.
( ) Falsch
Grund:
( ) Richtig
Es gibt Objekte, die einem Fenster hinzugefügt werden
( ) Falsch und doch nicht sichtbar gemacht werden können.
Grund:
( ) Richtig
Von einer anonymen Lauscherklasse kann nur ein Lauscherobjekt erzeugt werden.
( ) Falsch
Grund:
Aufgabe 4: Die Schnittstelle DoppelKreis wurde von einer Klasse DoppelKreisImpl implementiert, die die protected Komponenten kreis1 und kreis2 vom Typ Kreis enthält; die beiden Kreise haben immer dieselbe Farbe. Implementieren Sie nun folgende Schnittstelle:
interface ErweiterterDoppelKreis extends DoppelKreis { public void bemalen(lehrbuch.Farbe farbe); public lehrbuch.Farbe inhalt() throws lehrbuch.KeineFarbeAusnahme; }
Die Objekte kreis1 und kreis2 sollen mit den Methoden bemalen und inhalt aus der Klasse Kreis (mit demselben Profil wie im ErweiterterDoppelKreis) manipuliert werden.
Aufgabe 5.: Zeichnen Sie die Datenstruktur (alle Objekte und alle Referenzen, die darauf zeigen) eines Programms mit zwei ErweiterterDoppelKreis-Objekten (s. Aufgabe 4). Schreiben Sie zu den Referenzen ihren Namen, zu den Objekten die Namen ihre Klassen (u.U. ihrer Oberklassen/Schnittstellen) hin.