Lösung der Klausur Pr21 WS '01/'02


Aufgabe 1.

class ErwGanzWS extends GanzWS {
   public void posit() {
     for (int i= 0; i < anzahl; i++) {
        int index = (aeltester + i) % inhalt.length;
        if (inhalt[index] < 0)
           inhalt[index] = -inhalt[index];
           // inhalt[index] = Math.abs(inhalt[index]); // alternativ zur vorigen Zeile
     }
   }

}

// wenn anzahl == 0, for-Schleife läuft nicht an

// wenn alle Zahlen positiv, if gibt immer false und keine Änderung


Aufgabe 2.

Annahme: Die (nicht aufgeführten) Konstruktoren erzeugen die Objekte für die Referenzen


Aufgabe 3.

·         .Die Konvertierung von Referenzen geschieht in Java immer automatisch.

Falsch: nur bei Aufwärtskompatibilität; bei Abwärtskompatibilität muss explizit konvertiert werden.

·         Die Standard-Multibehälter aus dem Paket java.util sind polymorphe Multibehälter

Richtig: Parametertyp Object beim Eintragen; Ergebnistyp Object beim Lesen

·         .In ein ObjectOutputStream müssen alle Objekte einzeln mit writeObject übertragen werden.

Falsch: ein writeObject überträgt die ganze Objektstruktur

·         Auf einen Knopfdruck (JButton) können mehrere Lauscher reagieren.

Richtig: einem Knopfkönnen mehrere Lauscher addActionListener (und kein setActionListener) hinzugefügt werden.

·         Um die Länge einer verketteten Liste zu ermitteln, muss man alle Knoten durchlaufen.

Richtig/Falsch: Nicht, wenn eine Variable anzahl gepflegt wird.

·         reihung.length kann zu verschiedenen Zeiten verschiedene Werte liefern.

Richtig: reihung referiert dann verschiedene Reihungsobjekte.

·         Es ist möglich, dass r1.equals(r2) true liefert, r1.deepEquals(r2) (die tiefe Gleichheit) aber false

Falsch: Wenn der Inhalt zweier Objekte gleich ist, dann kommt deepEquals zu den gleichen referierten Objekten.

·         Die Reihungsimplementierung eines Multibehälters braucht weniger Speicherplatz

Richtig/Falsch: weniger, weil keine Knoten-Referenzen benötigt werden; mehr, weil es leere Plätze gibt.


Aufgabe 4.

void einszweidrei(char par) {
   System.out.println("eins");
   do ( 
     System.out.println("drei");
     System.out.println("zwei"); 
   } while (false);
   switch (par) {
     case 'a' : case 'e' : System.out.println("aaa"); break;
     case 'p' : System.out.println("ppp");
   }
}

Aufgabe 5.

boolean istFarbmenge(Farbmulti objekt) (
   objekt.eintragen(Farbe.ROT); 
   objekt.eintragen(Farbe.ROT); // einmal vorhanden, wenn Farbmenge
   objekt.entfernen(Farbe.ROT); // nicht vorhanden, wenn Farbmenge
   return ! objekt.vorhanden(Farbe.ROT); 
}