Lösung der Nachklausur Pr11 SS' 01


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.