Klausur Pr11 WS '02/'03

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. Schrei­ben Sie die Lösungen auf leere nummerierte Blätter mit Ihrem Namen; kennzeichnen Sie die Aufgabennummer eindeutig. Geben Sie alle Blätter (auch die Schmier­blät­ter) ab. Für falsche oder nicht einleuchtende Lösungen be­kommen Sie grund­sätzlich kei­ne Punk­te. Wenn aber aus Ihren Notizen oder Be­merkungen er­sicht­lich ist, dass Ihr Gedankengang richtig war, kön­nen Sie Teilpunkte bekommen. Sie ver­lie­ren jedoch diese Möglichkeit, wenn Abschreiben oder Kommu­ni­ka­ti­on wäh­rend der Klau­­sur nachgewiesen werden kann. Der Kern der Fragen wurde kursiv gesetzt. Bei manchen Aufgaben steht als Orientierungder Anzahl der Programmzeilen in der Musterlösung. In den letzten 15 Minuten werden keine Fragen mehr beant­wor­tet..

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 Stich­worten 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 pro­tec­ted 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.