Aufgabe 1: In der Übung haben Sie einen Farbsack implementiert. Eine mögliche Lösung ist:
class FarbsackImpl { protected int[] inhalt; public FarbsackImpl() { inhalt = new int[3]; } public void eintragen(Farbe farbe) { inhalt[farbe.pos()]++; } public void enfernen(Farbe farbe) { inhalt[farbe.pos()]--; } public boolean vorhanden(Farbe farbe) { return inhalt[farbe.pos()] > 0; } }
Erweitern Sie nun diese Klasse um folgende Methoden:
int anzahl(Farbe farbe); // Anzahl der farbe-Objekte im Sack int anzahl(); // Gesamtzahl aller Farbe-Objekte im Sack
Aufgabe 2.: Schreiben Sie ein minimales (kleinstes) aber vollständiges Beispiel, das die folgende Situation illustriert: „In einen Parameter vom Schnittstellentyp wird ein Objekt übergeben“. Schreiben Sie also eine (minimale) Schnittstelle, Klasse, Methodenvereinbarung (in einer Klasse) 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 int var1 = 1; public int var2 = 2; static int var3 = 3; private Klasse objekt1; static Klasse objekt2 = new Klasse(); public Integer objekt4 = new Integer(4); public static void main(String[] kzp) { Integer objekt4 = new Integer(4); int var4 = 4; Klasse objekt1 = new Klasse(); } }
Aufgabe 4: Definieren Sie einen Knopf im Appletfenster, der beim Klick seine Farbe verändert. Sie brauchen dazu folgende Klassen und Methoden:
class Button extends AbstractButton{ Button(String beschriftung); } abstract class AbstractButton { void setColor(Color farbe); void addActionListener(ActionListener lauscher); } class Applet { void add(AbstractButton objekt); } 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
r.length ist
dann und nur dann konstant (wird nicht im Laufe des Programms nicht verändert),
( ) Falsch wenn die Reihungseferenz
r als
final
vereinbart wurde
Grund:
( ) Richtig
Im Rumpf einer Prozedur mit Parametertyp
Object kann für
den Parameter
( ) Falsch die Methode
toString
aufgerufen werden,
compareTo jedoch nicht.
Grund:
( ) Richtig
Im Rumpf einer Zählschleife darf auf die Laufvariable
( ) Falsch nur lesend zugegriffen werden.
Grund:
( ) Richtig
Als Ausgabeparameter einer Prozedur kann nicht
( ) Falsch eine primitive Variable verwendet werden.
Grund:
( ) Richtig
Für ein Ausnahmeobjekt können keine Methoden aufgerufen werden.
( ) Falsch
Grund:
( ) Richtig
Operatoren können in Java nur auf primitive Variablen
( ) Falsch und nie auf Referenzvariablen angewandt werden.
Grund:
( ) Richtig
Ein Mutator darf nicht als aktueller Parameter aufgerufen werden.
( ) Falsch
Grund:
( ) Richtig
Ein String-Objekt
verhält sich in jeder Hinsicht wie ein
char[]-Objekt,
( ) Falsch der Unterschied ist nur syntaktisch.
Grund:
Aufgabe 6: Schreiben Sie eine boolean-Methode, die feststellt, ob Ihr Name (your name) als Kommandozeilenparameter an die main-Methode übergeben wurde oder nicht. Schreiben Sie auch eine main-Methode, die sie aufruft.