Willkommen im zweiten Semester! Wir greifen im ersten Übungsblatt nochmals das Thema auf, mit dem wir das erste Semester beendet hatten: Klassen und Interfaces. Damit begegnen uns erstmals objektorientierte Konzepte, welche die Grundlage für das Verständnis vieler weiterer Themen in diesem Semester bilden.
Daher denken Sie gerade intensiv über eine eigene ``luxuriöse'' neue Datenstruktur nach, die sowohl wie ein ADTSimpleStack als auch wie eine ADTSimpleQueue verwendet werden kann. An dieser Stelle beginnen Sie nun, Java schätzen zu lernen, denn durch Verwendung des Interface-Konzeptes lässt sie eine solche Datenstruktur schnell realisieren. Letztlich ist es ja ``nur'' notwendig, die beiden Interfaces aus dem Skript (ADTSimpleStack und ADTSimpleQueue) gleichzeitig zu implementieren.
Und schon sind wir bei Ihrer ersten Informatik-Aufgabe des Sommersemsters 2006:
Schreiben Sie eine Java-Klasse DeluxeStruct, welche die gewünschte Datenstruktur realisiert, d.h. sowohl eine Implementierung des Interfaces ADTSimpleStack als auch von ADTSimpleQueue darstellt.
Inbesondere sollen Sie diese Datenstruktur noch nicht als Interface konzipieren sondern vielmehr als konkrete Implementierung der genannten Interfaces aus dem Skript.
Ändern Sie diese beiden Programme also dahingehend, daß diese die neue Datenstruktur verwenden und testen Sie somit Ihre neue Datenstruktur aus Aufgabe 1 auf eine korrekte Funktionsweise.
Einerseits haben Sie von der Datenstruktur namens Dequeue gehört (ein Akronym von ``double ended queue''), einer Warteschlange, bei der man auch von vorne Elemente anfügen und hinwegnehmen kann. Diese Operationen tragen für gewöhnlich die Bezeichnungen shift (zum Entfernen) und unshift (zum Hinzufügen). Eine dieser Operationen fehlt noch gänzlich in Ihrer bisherigen Datenstruktur, die andere haben wir zwar schon, aber unter einem anderen Namen.
Ach ja, und diesmal möchten Sie neben der konkreten Datenstruktur auch noch ein passendes Interface ADTDeluxeStruct dazu haben.
Schreiben Sie also ein solches Interface und ergänzen / modifizieren Sie Ihre Lösung von Aufgabe 1 derart, dass diese nun eine Implementierung (nur) dieses neuen Interfaces ADTDeluxeStruct darstellt.