Nachklausur PR11 im WS'03/'04

Aufgabe 1: Programmieren Sie eine fehlertolerante Klasse EimerUndKreis mit den (parameterlosen) Methoden fuellen und entleeren, ähnlich wie in der Übung 11. Beim Erzeugen eines Objekts soll ein leerer Eimer und ein leerer Kreis auf dem Bildschirm erscheinen; beim fuellen sollen beide blau, beim entleeren sollen beide leer (nicht unsichtbar!) werden. Sie brauchen dazu folgende (alle public) Methoden und Klassen:

class Eimer { void anzeigen(); void fuellen() throws VollAusnahme;
   void entleeren() throws LeerAusnahme; ... }
class Kreis { void zeichnen(); void bemalen(Farbe farbe); void verstecken(); ... }
class Farbe { Farbe BLAU; ... }

Aufgabe 2.: Programmieren Sie eine Funktion (mit 2 Parametern), die die Anzahl der Vorkommnisse eines gegebenen Zeichens in einer gegebenen Zeichenkette errechnet (z.B. in "abaa" ist die Anzahl der Vorkommnisse von 'a' ist 3, von 'b' ist 1, von 'c' ist 0).  Sie brauchen dazu folgende Methoden der Klasse String:

int length(); // die Länge der Zeichenkette
char charAt(int pos); // das Zeichen an der Position pos

Aufgabe 3: Programmieren Sie den Konstruktor eines Fensters mit Menü (ähnlich wie in der Übungsaufgabe 22), das zwei Spalten ("Erste" und "Zweite") sowie drei Menüpunkte ("Erste" und "Zweite" in der ersten Spalte, "Dritte" in der zweiten Spalte) enthält. Sie brauchen dazu folgende Klassen (alle haben einen Konstruktor mit einem String-Parameter) und Methoden aus dem Paket javax.swing:

class JFrame { public void setJMenueBar(JMenueBar menu); ... }
class JMenuBar { public void add(JMenu menu); ... }
class JMenu { public void add(JMenuItem menuItem); ... }
class JMenuItem { ... }

Aufgabe 4: Zeichnen Sie das Objekdiagramm für die obige Aufgabe 3 (den Zustand nach dem Ablauf des Konstruktors). Verwenden Sie hierbei die Notation von der Vorlesung: Variable = Kästchen mit Namen (daneben, wenn bekannt) und Inhalt ( = Wert); Referenz = Pfeil aus der Referenz zum Objekt (oder X wenn null), Name der Methode neben dem Pfeil, wenn die Methode die (vermutete) Referenz beschreibt, Objekt = Wolke mit dem Namen der Klasse (daneben) und Inhalt (wenn bekannt oder vermutet).

Alternativ (nur wenn Aufgabe 3 = 0 Punkte): Zeichnen Sie das Objekdiagramm für die obige Aufgabe 1, nachdem in einer main-Methode zwei Referenzen und zwei Objekte vom Typ EimerUndKreis  erzeugt wurden.


Aufgabe 5. (40 Punkte, 15 Min): Kreuzen Sie die richtigen Antworten an und geben Sie Ihre Begründung mit Stich­worten (nicht länger als die Zeile) dazu. Ohne Begründung gilt Ihre Antwort als falsch.

(     )     Richtig            Der Ergebnistyp einer Methode ist immer eine Klasse oder ein primitiver Typ.
(     )     Falsch            

Grund:                                                                                                                                                                                                        

(     )     Richtig            Die Anzahl der aktuellen Parameter in einem Methodenaufruf wird in der Klasse bestimmt,
(     )     Falsch             die den Rumpf der Funktion enthält.

Grund:                                                                                                                                                                                                        

(     )     Richtig            Wenn actionPerformed aus ActionListener nicht überschrieben wird, ist sie leer.
(     )     Falsch            

Grund:                                                                                                                                                                                                        

(     )     Richtig            Lokale Objekte (die in einem Methodenrumpf mit new erzeugt werden) werden
(     )     Falsch             auf dem Stapel gespeichert.

Grund:                                                                                                                                                                                                        

(     )     Richtig            Ein Konstruktor ist weder eine Prozedur, noch eine Funktion.
(     )     Falsch

Grund:                                                                                                                                                                                                        

(     )     Richtig            Alle Ausnahmen (die mit throw ausgeworfen werden) sind Unterklassen
(     )     Falsch             entweder der Klasse Error, oder der Klasse Exception.

Grund:                                                                                                                                                                                                        

(     )     Richtig            Das Klassendiagramm wird zur Laufzeit nicht verändert.
(     )     Falsch            

Grund:                                                                                                                                                                                                        

(     )     Richtig            Der Operator /= ist für alle artihmetische Typen definiert.
(     )     Falsch

Grund:                                                                                                                                                                                                        

 


Aufgabe 6: Schreiben Sie die 5 Schritte der Ausführung einer for-Schleife auf:                for (; ; )

1. ________________________________________________________________________________________________

2. ________________________________________________________________________________________________

3. ________________________________________________________________________________________________

4. ________________________________________________________________________________________________

5. ________________________________________________________________________________________________

Wann können Sie eine Zählschleife verwenden, wann müssen Sie eine bedingungsgesteuerte Schleife benutzen? _________