22.08.2013 Aufrufe

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

3.7.2 Vor- und Nachbedingungen<br />

Die bedeutendste Anwendung von Zusicherungen ist die Spezifikation von Routinen, <strong>der</strong>en Aufgabe ja die<br />

Implementierung von Funktionen eines abstrakten Datentyps ist. Um diese Aufgabe präzise auszudrücken –<br />

sowohl als Hilfe für den Entwurf als auch als Teil einer Dokumentation – gibt es in Eiffel zwei Möglichkeiten,<br />

Zusicherungen einer Routine zuzuordnen: als Vor- und die Nachbedingungen (preconditions bzw. requirements<br />

und postconditions) <strong>der</strong> Routine. Diese zielen darauf ab, die semantischen Eigenschaften <strong>der</strong> Routine explizit<br />

zu machen.<br />

Die Vorbedingung drückt diejenigen Eigenschaften aus, die beim Aufruf <strong>der</strong> Routine immer gelten müssen,<br />

damit sie ordnungsgemäß funktionieren kann. Sie gilt für alle Aufrufe, sowohl von innerhalb <strong>der</strong> deklarierenden<br />

Klasse als auch von außerhalb bei einem Aufruf durch eine Kundenklasse. In einem korrekten System sollte<br />

es <strong>der</strong> Fall sein, daß Routinen niemals in Zuständen aufgerufen werden, in denen die Vorbedingung nicht<br />

erfüllt ist. Eine Vorbedingung kann innerhalb einer Routinendeklarationen in <strong>der</strong> Form von Klauseln angegeben<br />

werden, die mit dem Schlüsselwort require eingeleitet werden. Diese Klausel muß vor <strong>der</strong> eigentlichen<br />

Anweisungsfolge und ggf. auch vor einem local erscheinen.<br />

In <strong>der</strong> Nachbedingung wird festgelegt, welche Eigenschaften nach Beendigung <strong>der</strong> Routine gewährleistet sein<br />

sollen. Sie drückt eine Garantie aus, welche <strong>der</strong> Implementierer für den Fall übernimmt, daß beim Aufruf <strong>der</strong><br />

Routine die Vorbedingungen erfüllt waren. Eine Nachbedingung kann innerhalb einer Routinendeklarationen<br />

in <strong>der</strong> Form von Klauseln angegeben werden, die mit dem Schlüsselwort ensure eingeleitet werden. Diese<br />

Klausel muß am Ende <strong>der</strong> Anweisungsfolge direkt vor dem end erscheinen.<br />

Im Abschnitt 3.6 hatten wir die generische Klasse ARRAY mit den Features make, lower, upper, count,<br />

item und put skizziert. Als Vorbereitung für eine systematische Implementierung dieser Klasse wollen wir diese<br />

Skizze nun um die notwendigen Vor- und Nachbedingungen ergänzen, welche die semantischen Eigenschaften<br />

eindimensionaler Keller beschreiben. Dies sind zum Beispiel<br />

• make(min,max) erzeugt ein Feld <strong>der</strong> Größe max - min + 1 bzw. <strong>der</strong> Größe 0, wenn max

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!