Lösung der Klausur Prg22 SS'06


Aufgabe 1.

static boolean enthält(final Collection sammlung, final Object objekt) {
   for (Iterator i = sammlung.iterator(); i.hasNext();)
      if (objekt.equals(i.next()) return true;
   return false; }
static boolean <Typ>enthält(final Collection<Typ> sammlung, final Typ objekt) {
   for (Typ element : sammlung)
      if (objekt.equals(element) return true;
   return false; }

Aufgabe 2.

private class Knoten {
   Object element; Knoten vorheriger, nächster; }
public void einfügen(final Object element) {
   Knoten neu = new Knoten(element);
   neu.vorheriger = anker;
   neu.nächster = anker.nächster;
   anker.nächster.vorheriger = neu;
   anker.nächster = neu;
   anker = neu; }
	

Aufgabe 3.

Stapel entleeren() { // Objektfunktion
   return new Stapel(); }
static Stapel entleeren() { // Klassenfunktion
   return new Stapel(); } 

Aufgabe 4.

(X) Falsch – Bessere Zeitkomplexität eines Sortierverfahrens muss mit schlechterer Speicherkomplexität erkauft werden.
Grund: Haldensort hat die beste Zeitkomplexität (n log n) und die beste Speicherkomplexität (konstant)

(X) Falsch – Die Reihenfolge der Eintragungen in einen Standard-Multibehälter ist immer relevant (wichtig).
Grund: java.io.Set-Klassen sind Mengen

(X) Falsch – Ein Brückenstrom verbindet Ein- und Ausgabeströme miteinander
Grund: Zeichen- und Byteorientierte Ströme (In/OutputStreamReader/Writer)

(X) Richtig/Falsch – Nebenläufige Prozesse in Java werden mit der Implementierung der Schnittstelle Runnable programmiert.
Grund für Falsch: Thread kann auch erweitert werden
Grund für Richtig: Thread erweitert Runnable

(X) Richtig – Es gibt Schleifen in Java, deren Endlichkeit vom Compiler garantiert wird.
Grund: for (int element in reihung)

(X) Richtig/Falsch – Ein generischer Multibehälter kann Objekte beliebiger Klassen aufnehmen.
Grund: Richtig, wenn für Object ausgeprägt; Falsch, wenn für etwas anderes

(X) Falsch – Die Darstellung eines XML-Dokuments kann entweder in einem DTD  oder in einem CSS defiiert werden.
Grund: DTD ist für Strukturdefinition; XSL oder CSS ist für die Darstellung

(X) Richtig – Wenn die flache Gleichheit true liefert, liefert auch die tiefe Gleichheit true.
Grund: die referenzierten Objekte (untersucht bei tiefer Gleichheit) sind identisch


Aufgabe 5:

class KonsolOberflaeche implements Oberflaeche {
   private Console konsole = new Console();
   private Rechenwerk rechenwerk;
   public KonsolOberflaeche(Rechenwerk rechenwerk) {
     this.rechenwerk = rechenwerk; }
   public void registrieren(ActionListener ziffernLauscher, ActionListener opLauscher){
     konsole.addActionListener(ziffernLauscher);
     konsole.addActionListener(opLauscher); }
   public void anzeigen() {
     konsole.println(rechenwerk.getZahl()); } }