Prof. Dr. Franz Schweiggert Abteilung Angewandte Informationsverarbeitung 25.04.2006
Norbert Heidenbluth Blatt 1


Uni Logo



Allgemeine Informatik II für Mathematiker/Wirtschaftsmathematiker
(SS 2006)



Abgabetermin: 04. Mai 2006

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.

Aufgabe 1: Eine Datenstruktur ``DeLuxe''$\ldots$ (4 Punkte)

In der Vorlesung haben Sie die abstrakten Datentypen ADTSimpleStack und ADTSimpleQueue kennengelernt und sind von beiden so begeistert, daß Sie nun gar nicht wissen, für welche Sie sich in ihren Programmen zukünftig entscheiden sollen1. Als verzogenes Einzelkind sind Sie es aber auch gar nicht gewöhnt, sich für nur eine Alternative zu entscheiden - Sie haben immer gleich beides gewollt (und bekommen).

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.

Aufgabe 2: $\ldots$ und deren Anwendung (2 Punkte)

Nachdem die neue Datenstruktur nun geschrieben (``implementiert'') ist, soll sie natürlich auch benutzt werden. Dazu können Sie mit nur minimalem Änderungsaufwand die beiden Programme TestSimpleStack und TestSimpleQueue verwenden. (Warum?)

Ä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.

P.S.:

Diese Teilaufgabe darf Sie höchstes 5 Minuten kosten$\ldots$ :-)

Aufgabe 3: Noch mehr Luxus und Interfaces (4 Punkte)

Nach der Bearbeitung von Aufgabe 1 haben Sie nun zwar die gewünschte ``Deluxe''-Datenstruktur, aber zufrieden sind Sie - wie es bei verzogenen Einzelkindern halt immer so ist - nun schon wieder nicht. Sie möchten gleich wieder viel mehr haben. Noch mehr Luxus! Au weia!

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.

Aufgabe 4: Und nochmals eine Anwendung (2 Punkt)

Schreiben Sie eine eigene Test-Anwendung Ihrer neuen Datenstruktur. Alle bereitgestellten Methoden sollten (mindestens einmal) sinnvoll verwendet werden.

Hinweis:

Wir wünschen ein erfolgreiches Sommersemester 2006!



Fußnoten

... sollen1
Wobei natürlich in der Regel der Anwendungsfall ein wichtiges Kriterium dafür darstellt, welche Datenstruktur geeignet ist.


Norbert Heidenbluth 2006-04-25