Aufgabe 1.
B A C // polymorpher Aufruf von x(); Auswahl häng vom Objekt ab.
Aufgabe 2:
public class UnsichererSpeicher { private Speicher speicher = new Speicher(); public void eintragen(Object element) throws EnthaltenFehler { try { speicher.eintragen(element); } catch (EnthaltenAusnahme e) { throw new EnthaltenFehler(); } } public Object austragen(Object element) { Object object = speicher.austragen(element); return object; } } class EnthaltenFehler extends Error { }
Aufgabe 3:
import lehrbuch.Kreis; import lehrbuch.Farbe; public class DreiKreise { private static Kreis k1 = new Kreis(), k2 = new Kreis(), k3 = new Kreis(); public static void bemalen() { k1.bemalen(Farbe.ROT); k2.bemalen(Farbe.GRUEN); k3.bemalen(Farbe.BLAU); } public static void verstecken() { k1.verstecken(); k2.verstecken(); k3.verstecken(); } public static void wiederherstellen() { k1.wiederherstellen(); k2.wiederherstellen(); k3.wiederherstellen(); } }
Aufgabe 4:
· Von einer Klasse kann ein Objekt nur dann erzeugt werden, wenn sie einen (impliziten oder expliziten) public-Konstruktor enthält.
Falsch: In der Klasse selbst oder in Unterklassen können Objekte erzeugt werden, selbst wenn sie keinen public-Konstruktor enthält.
· Ein aktueller Parameter (eines Methodenaufrufs) wird in Java immer in den formalen Parameter (der Methodendefinition) kopiert.
Falsch: Objekte werden bei der Parameterübergabe nicht kopiert („call by reference“)
· Mit FlowLayout muss man die Größe des Oberflächenobjekte explizit bestimmen.
Richtig: FlowLayout verändert die Größe nicht
Falsch: Objekte (wie ein Button) können auch implizit ihre eigene Größe bestimmen (z.B. durch die Länge der Beschriftung)
· Ein char-Wert kann immer implizit nach short konvertiert werden.
Richtig: beide 2 Bytes lang
· Einer Java-Klasse kann Methoden und Variablen enthalten und nichts anderes.
Falsch: auch z.B. innere Klassen
· Durch das Drücken eines Knopfes können mehrere actionPerformed-Methoden ausgeführt werden.
Richtig: Lauscher wird mit addActionListener und nicht mit setActionListener hinzugefügt (es kann also mehrere Lauscher geben)
· public int funktion(); darf nicht als eine Anweisung funktion(); aufgerufen werden.
Falsch/Richtig: Leider kann, sollte aber nicht (weil das Ergebnis verloren geht)
· Von einer anonymen Klasse kann nur ein Objekt erzeugt werden.
Richtig: für weitere new-Aufrufe steht keine Klasse zur Verfügung
Falsch: das Objekt kann kopiert werden.
Aufgabe 5.