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 Stichworten (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 Kommandozeilenparameter an die main-Methode genau Ihr Vorname und Nachame sind oder nicht. Schreiben Sie auch eine main-Methode, die sie aufruft.