Lösung der Nachklausur Pr22 im SS'07


Aufgabe 1.

class IterableNodeList implements Iterable<Node> {
      NodeList
daten; // gekapseltes NodeList-Objekt
     
public IterableNodeList(NodeList daten) { this.daten = daten; } // wird im Konstruktor übergeben
     
public Iterator<Node> iterator() { // Methode aus der Schnittstelle Iterable zu implementieren
           
return new Iterator<Node>() { // liefert ein anonymes Objekt von anonymer Klasse
                 
private int index = -1;

                  public boolean hasNext() { // drei Methoden aus der Schnittstelle Iterator zu implementieren
                       
return index < daten.getLength()-1; } // mit Hilfe der NodeList-Methoden
                 
public Node next() { index++; return daten.item(index); }
                 
public void remove() { } }; } }


Aufgabe 2.-3.

class DoppeltVerketteterRing<Element> {
      private class Knoten {
            Element daten;
            Knoten vorwärts, rückwärts; }
      private Knoten anker;
      void einfügen (Element element) {
            Knoten neu = new Knoten();
            neu.daten = element;
            neu.vorwärts = anker.vorwärts;
            neu.rückwärts = anker;
            anker.vorwärts.rückwärts = neu;
            neu.vorwärts = anker.vorwärts;
            anker.rückwärts = neu;
            neu.rückwärts = anker;
            anker = neu; }
      boolean finden(Element element) { // const
		if (anker == null) return false;
		Knoten temp = anker.vorwärts;
             while (temp != anker) {
                  if (temp.daten == element)
                        return true;
                  temp = temp.vorwärts; }
             return false; } }

Aufgabe 4:

( X )     Falsch            View kennt Control, damit er die Darstellung bei Eingaben aktualisieren kann.

Grund: Control kennt View und Model, um sie bei Eingaben zu benachrichtigen

( X )     Richtig            Die logische Gleichheit von Stapeln ist eine tiefe Gleichheit.

Grund: Tiefe Gleichheit läuft rekursiv durch und liefert true für zwei logisch gleiche Stapel

( X )     Falsch            Ein generisches Warteschlangenobjekt ist in der Lage, sowohl int-Werte wie auch Wochentag-Objekte zu speichern.

Grund: Es kann nur Objekte, also keine Werte speichern

( X )     Richtig            PipedInputStream ist kein Filterstrom sondern ein Behälterstrom.

Grund: Es wird nicht an ein weiteres Stromobjekt angeschlossen

( X )     Richtig            In einem DTD wird definiert, welche XML-Dokumente valide sind und welche nicht.

Grund: Der Parser validiert gegen DTD; darin sind die gültigen Elemente beschrieben

( X )     Falsch            Shell-Sort ist eine verbesserte Version von Quicksort.

Grund: ganz anderer Algorithmus

( X )     Falsch            Fürs Threads müssen in Java die Methoden run und start programmiert werden.

Grund: nur die run-Methode; start muss aufgerufen werden.

( X )     Falsch            Stromobjekte werden über spezielle Methodenaufrufe verkettet. 

Grund: über Konstruktorparameter


Aufgabe 5:

public void run() {
   while(true) {
      rahmen.repaint();
         try { Thread.sleep(50); }
            catch (InterruptedException e) { } } } }
new Animator(this).start();