Aufgabe 1. (ca. 10 Programmzeilen): NodeList ist leider (noch) nicht Iterable, so kann man z.B. nach
NodeList elemente = xpath.evaluate(xpathAusdruck);
nicht die verbesserte for-Schleife
for (Node element : elemente) …
schreiben. Erstellen Sie also eine Klasse IterableNodeList (mit einer gekapselten NodeList-Objekt, das im Konstruktor übergeben wird), die die Schnittstelle Iterable implementiert (damit die verbesserte for-Schleife – wie oben – verwendet werden kann). Sie enthält nur eine Methode:
Iterator iterator(); // liefert Iterator-Objekt, mit dem NodeList durchlaufen werden kann
Sie müssen hierzu die Schnittstelle java.util.Iterator implementieren:
interface Iterator<T> { T next(); // schaltet zum nächsten Element und liefert es boolean hasNext(); // besagt ob es weitere Elemente gibt void remove(); } // kann hier leer implementiert werden
Sie brauchen dabei folgende Methoden von NodeList:
int getLength(); // liefert die Anzahl der Node-Objekte in NodeList Node item(int index); // liefert das Node mit dem gegebenen index
Aufgabe 2: Eine doppelt verketteter Ring ist sowohl vorwärts wie auch rückwärts verkettet:
class DoppeltVerketteterRing<Element> { private Knoten anker; … }
anker referenziert hierbei einen beliebigen Knoten (irgendwo mitten im Ring). Zeichnen Sie nun einen solchen Ring mit 3 Elementen (als Objektdiagramm), und fügen Sie ein neues Element nach dem von anker referenzierten Element ein. anker referenziert zum Schluss das neue Element.
Programmieren Sie die Klasse Knoten und die Methode einfügen.Aufgabe 3: Schreiben Sie eine Methode finden, die feststellt, ob ein DoppeltVerketteterRing-Objekt (aus der Aufgabe 2) ein gegebenes Objekt enthält oder nicht.
Aufgabe 4: Kreuzen Sie die richtigen Antworten an und geben Sie Ihre Begründung mit Stichworten dazu. Ohne Begründung gilt Ihre Antwort als falsch.
( )
Richtig
View kennt Control, damit er die
Darstellung bei Eingaben aktualisieren kann.
( ) Falsch
Grund:
( )
Richtig Die
logische Gleichheit von Stapeln ist eine tiefe Gleichheit.
( ) Falsch
Grund:
( )
Richtig
Ein generisches Warteschlangenobjekt
ist in der Lage, sowohl
int-Werte
( ) Falsch
wie auch
Wochentag-Objekte
zu speichern.
Grund:
( )
Richtig
PipedInputStream
ist kein Filterstrom sondern ein Behälterstrom.
( ) Falsch
Grund:
( )
Richtig
In einem DTD wird definiert, welche
XML-Dokumente valide sind und welche nicht.
( ) Falsch
Grund:
( )
Richtig
Shell-Sort ist eine verbesserte
Version von Quicksort.
( ) Falsch
Grund:
( )
Richtig
Fürs Threads müssen in Java die
Methoden run
und start
programmiert werden.
( ) Falsch
Grund:
( ) Richtig
Stromobjekte werden über spezielle
Methodenaufrufe verkettet.
( ) Falsch
Grund:
Aufgabe 5: In der Vorlesung wurde die Klasse Animator vorgestellt, mit der in gegebenen Zeitintervallen Veränderungen in einem Frame-Objekt dargestellt werden können (wie auch in der letzten Übung):
class Animator extends Thread { private Frame rahmen; public Animator(Frame rahmen) { this.rahmen = rahmen; } public void run() { …
Programmieren Sie nun die Methode run fertig und schreiben Sie ihren Aufruf im Konstruktor der Klasse
public class EimerAnimation extends JFrame { …