Vorbedingung

In der Computerprogrammierung ist eine Vorbedingung eine Bedingung oder Prädikat, das immer gerade vor der Ausführung von einer Abteilung des Codes oder vor einer Operation in einer formellen Spezifizierung wahr sein muss.

Wenn eine Vorbedingung verletzt wird, wird die Wirkung der Abteilung des Codes unbestimmt, und können so, oder kann seine beabsichtigte Arbeit nicht ausführen. Sicherheitsprobleme können wegen falscher Vorbedingungen entstehen.

Häufig werden Vorbedingungen einfach in die Dokumentation der betroffenen Abteilung des Codes eingeschlossen. Vorbedingungen werden manchmal mit Behauptungen innerhalb des Codes selbst geprüft, und einige Sprachen haben spezifische syntaktische Aufbauten, um so zu tun.

Zum Beispiel: Der factorial wird nur für ganze Zahlen größer oder gleich der Null definiert. So würde ein Programm, das den factorial einer Eingangszahl berechnet, Vorbedingungen dass die Zahl haben, eine ganze Zahl und dass er sein, größer oder gleich der Null sein.

In der objektorientierten Programmierung

Vorbedingungen in der objektorientierten Softwareentwicklung sind ein wesentlicher Teil des Designs durch den Vertrag. Das Design durch den Vertrag schließt auch Begriffe der Postbedingung und Klasse invariant ein.

Die Vorbedingung für jede Routine definiert irgendwelche Einschränkungen auf den Gegenstand-Staat, die für die erfolgreiche Ausführung notwendig sind. Aus dem Programm-Entwickler-Gesichtspunkt setzt das den Teil des alltäglichen Anrufers des Vertrags ein. Der Anrufer wird dann verpflichtet sicherzustellen, dass die Vorbedingung vor dem Benennen der Routine hält. Die Belohnung für die Anstrengung des Anrufers wird in der genannten Routine-Postbedingung ausgedrückt.

Beispiel von Eiffel

Die Routine im folgenden in Eiffel geschriebenen Beispiel nimmt als ein Argument eine ganze Zahl, die ein gültiger Wert seit einer Stunde des Tages, d. h., 0 bis 23, einschließlich sein muss. Die Vorbedingung folgt dem Schlüsselwort. Es gibt an, dass das Argument größer oder gleich der Null und weniger sein muss als oder gleich 23. Das Anhängsel "" beschreibt diese Vorbedingungsklausel und dient, um sie im Falle einer Laufzeitvorbedingungsübertretung zu identifizieren.

set_hour (a_hour: GANZE ZAHL) - Satz `Stunde' zu `a_hour' verlangen Sie

valid_argument: a_hour> = 0 und a_hour

Vorbedingungen und Erbe

In Gegenwart vom Erbe tun die Routinen, die durch Nachkomme-Klassen (Unterklassen) geerbt sind, so mit ihren Vorbedingungen in der Kraft. Das bedeutet, dass irgendwelche Durchführungen oder Wiederdefinitionen von geerbten Routinen auch geschrieben werden müssen, um ihren geerbten Vertrag zu erfüllen. Vorbedingungen können in wiederdefinierten Routinen modifiziert werden, aber sie können nur geschwächt werden. D. h. die wiederdefinierte Routine kann die Verpflichtung des Kunden vermindern, aber sie nicht vergrößern.

Siehe auch

Design durch den VertragLogik von HoareInvariants, der durch Bedingungen unterstützt istDatenbankabzug

Design durch den Vertrag / Postbedingung
Impressum & Datenschutz