Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00
Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00
Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
7. Abstrakte Datentypen<br />
Die Spezifikation eines abstrakten Datentyps kann hierbei aus vier Teilen bestehen<br />
(angelehnt an Bertrand Meyer: Object oriented software construction, 2.Aufl.,<br />
Kap.6):<br />
1. Type: Hier wird der Name des neuen Typs genannt, zusammen mit eventuellen<br />
Parametern.<br />
2. Functions: Hier werden die Signaturen der auf dem abstrakten Datentyp<br />
definierten Funktionen angegeben, das heißt für jede Funktion der Name,<br />
Typen <strong>und</strong> Reihenfolge der Parameter, Ausgabetyp sowie ggf. die Information,<br />
ob eine Funktion eine totale () oder partielle () Funktion ist.<br />
3. Axioms: beschreiben Eigenschaften der eingeführten Funktionen als prädikatenlogische<br />
Formeln (zumeist Gleichungen). Jede Implementierung eines<br />
abstrakten Datentyps muß die Einhaltung der Axiome garantieren.<br />
4. Preconditions: Für jede partielle Funktion muß eine Vorbedingung angegeben<br />
werden, die sagt, wann diese Funktion definiert ist.<br />
Die ersten beiden Punkte legen die Signatur des ADT fest; die beiden anderen Teile<br />
die Bedeutung.<br />
Wir betrachten jetzt einige Beispiele.<br />
Ein einfacher, nicht rekursiver, nicht generischer Datentyp ist der Typ POINT.<br />
Type POINT<br />
Functions<br />
create: REAL ¢ REAL POINT Konstruktor<br />
get x: POINT REAL Selektor<br />
get y: POINT REAL Selektor<br />
is origin: POINT BOOL Prädikat<br />
translate: POINT ¢ REAL ¢ REAL POINT<br />
scale: POINT ¢ REAL POINT<br />
distance: POINT ¢ POINT REAL<br />
Axioms x,y,a,b,z,w: REAL<br />
get x(create(x,y))=x<br />
get y(create(x,y))=y<br />
is origin(create(x,y)) Ü Ý<br />
translate(create(x,y),a,b)=create(x+a,y+b)<br />
scale(create(x,y),a)=create(x¡ a,y¡ a)<br />
distance(create(x,y),create(z,w))= Ô Ü Þ Ý Û<br />
Preconditions<br />
keine<br />
Die Funktionen, die im Functions-Teil der ADT-Spezifikation eingeführt werden,<br />
können verschiedene Rollen spielen.<br />
138