Nachklausur PR11 im WS'04/'05

Aufgabe 1

 In der Vorlesung haben wir eine Farbmenge implementiert:

class FarbmengeImpl { protected boolean[] inhalt;
   public FarbmengeImpl() { inhalt = new boolean[3]; }
   public void eintragen(Farbe farbe) { inhalt[farbe.pos()] = true; }
   public void enfernen(Farbe farbe) { inhalt[farbe.pos()] = false; }
   public boolean vorhanden(Farbe farbe) { return inhalt[farbe.pos()]; } }

Erweitern Sie nun diese Klasse um folgende Methoden:

boolean beideVorhanden(Farbe f1, Farbe f2); // true wenn beide Farben enthalten sind
boolean eineVorhanden(Farbe f1, Farbe f2); // true wenn mindestens eine Farbe enthalten ist

Aufgabe 2.: Schreiben Sie ein minimales (kleinstes) aber vollständiges Beispiel, das die folgende Situation illustriert: „In einen Oberklassenparameter wird ein Unterklassenobjekt übergeben“. Schreiben Sie also geeignete Klassenvereinbarungen, Methodenvereinbarungen und einen Aufruf (in einem Methodenrumpf).


Aufgabe 3: Zeichnen Sie die Objektstruktur (alle Variablen, Objekte und Werte), die am Ende der folgenden main-Methode besteht:

class Klasse {
   private float a = 1.0; public boolean b = true; static int c = 3;
   private Klasse d; static Object e = new Object();
   public String f = new String("f");
   public static void main(String[] kzp) { String g = "g"; boolean h = h;
     Klasse i = new Klasse(); } }

Aufgabe 4: Definieren Sie ein Menü im Fenster, das beim Klick seine Farbe verändert. Sie brauchen dazu folgendes:

class JFrame { void setJMenuBar(JMenuBar menu); }
class JMenu { void add(JMenuItem menuItem); } class JMenuBar { void add(JMenu menu); }
class JMenuItem extends AbstractButton{ Button(String beschriftung); }
abstract class AbstractButton { void setColor(Color farbe); 
   void addActionListener(ActionListener lauscher); }
interface ActionListener { void actionPerformed(ActionEvent e); }

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            Die Länge eines Vector-Objekts kann  
(     )     Falsch             im Laufe des Programms nicht verändert werden.

Grund:                                                                                                                                                                                                        

(     )     Richtig            Die Methode toString kann für jede Referenz aufgerufen werden.
(     )     Falsch            

Grund:                                                                                                                                                                                                        

(     )     Richtig            Im Rumpf einer for-schleife kann die Laufvariable
(     )     Falsch             verändert werden werden.

Grund:                                                                                                                                                                                                        

(     )     Richtig            Jeder Variable muss ein Wert zugewiesen werden,
(     )     Falsch             bevor sie gelesen werden kann.

Grund:                                                                                                                                                                                                        

(     )     Richtig            Jede Ausnahme kann das Programm zum Absturz bringen.
(     )     Falsch

Grund:                                                                                                                                                                                                        

(     )     Richtig            Es gibt Operatoren, die nur für bestimmte Typen
(     )     Falsch             (und nicht für andere) angewandt werden dürfen.

Grund:                                                                                                                                                                                                        

(     )     Richtig            Mutatoren verändern den Wert von Variablen,
(     )     Falsch             nicht aber von Objekten.

Grund:                                                                                                                                                                                                        

(     )     Richtig            Weil String eine immutable Klasse ist, darf einer String-Variable
(     )     Falsch             kein anderes
String-Objekt zugewiesen werden.

Grund:                                                                                                                                                                                                        


Aufgabe 6: Schreiben Sie eine boolean-Methode, die feststellt, ob die Kommando­zeilen­para­me­ter an die main-Methode genau Ihr Vorname und Nachame sind oder nicht. Schreiben Sie auch eine main-Methode, die sie aufruft.