Grundlagen der Informatik I “Programmierung”
Grundlagen der Informatik I “Programmierung”
Grundlagen der Informatik I “Programmierung”
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