11.10.2013 Aufrufe

Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00

Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00

Algorithmen und Datenstrukturen Vorlesungsskript WS/SS 99-00

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!