WS 97/98: Algorithmen und Programmierung III - Übungsblatt 3


Abgabe bis 6.11., 12 Uhr


Aufgabe 3.1 (5 Punkte)

Für ein Flugbuchungssystem werde ein abstrakter Datentyp Flug benötigt. Auf Flug-Objekten braucht man Operationen wie buchen, löschen, ausgebucht u.ä., für die Erzeugung eines Objekts eine Operation neuerFlug. Das Flugbuchungssystem könnte folgende Code-Fragmente enthalten:

Entwirf einen sinnvollen Satz von Operationen und fasse sie samt einer sorgfältig formulierten umgangssprachlichen Spezifikation in einem Definitionsmodul zusammen! (Dabei gibt es beträchtliche Freiheitsgrade, sowohl bei den Operationen als auch bei deren Parametrisierung. Beim obigen buchen beispielsweise könnte man sich den ersten Parameter als Variablenparameter vorstellen, über den man einen bestimmten Platz wünschen kann und, wenn dieser nicht verfügbar ist, vom System einen "ähnlichen" Platz erhält. Es sind aber natürlich auch andere Varianten denkbar.)

Wenn eine Operation nicht erfolgreich ausgeführt werden kann (z.B. buchen wenn alles ausgebucht ist), soll sie keinen Effekt haben und lediglich - als Boole'sche Funktionsprozedur formuliert - ein FALSE abliefern (andernfalls TRUE).


Aufgabe 3.2 (6 Punkte)

a) Verfasse eine Signatur für einen abstrakten Datentyp flug - entsprechend dem Flug aus Aufgabe 3.1 - in Miranda! Die Signatur soll ähnlich dokumentiert werden wie das Definitionsmodul. Anders als bei Aufgabe 3.1 sollen die Fehlermöglichkeiten nicht in der Signatur berücksichtigt werden.

b) Wähle für flug eine geeignete Repräsentation und gib eine dazu passende Implementierung an! Zu beachten ist, daß nicht alle Funktionen total sind. Wird versucht, einen nicht definierten Funktionswert zu berechnen, soll das Programm mit einer aussagekräftigen Fehlermeldung abbrechen.

c) flug ist geeignet zu testen.


26.10.1997