Dodatečná podmínka - Postcondition
v programování, a podmínka je stav nebo predikát to musí být vždy pravda hned po provedení nějaké části kódu nebo po operaci v formální specifikace. Postconditions jsou někdy testovány pomocí tvrzení v samotném kódu. Často jsou postconditions jednoduše zahrnuty do dokumentace příslušné části kódu.
Například: Výsledek a faktoriál je vždy celé číslo a větší nebo rovno 1. Takže program, který vypočítává faktoriál vstupního čísla, by měl postkondice, že výsledek po výpočtu bude celé číslo a že bude větší nebo rovno 1. Další příklad: a program, který vypočítá odmocnina vstupního čísla může mít následné podmínky, že výsledkem bude číslo a že jeho náměstí být rovno vstupu.
Postkondice v objektově orientovaném programování
V některých přístupech k návrhu softwaru spolu s předpoklady a třída invarianty, jsou součásti metody konstrukce softwaru design podle smlouvy.
Podmínkou pro každou rutinu je deklarace vlastností, které jsou zaručeny po dokončení provádění rutiny.[1] Vzhledem k tomu, že se jedná o smlouvu o rutině, poskytuje postcondition potenciálním volajícím jistotu, že v případech, kdy je rutina volána ve stavu, v němž je předpoklad drží, vlastnosti deklarované postcondition jsou zajištěny.
Eiffelova příklad
Následující příklad napsaný v Eiffelova nastavuje hodnotu atributu třídy hodina
na základě argumentu poskytnutého volajícím hodina
. Následná podmínka sleduje klíčové slovo zajistit
. V tomto příkladu postcondition zaručuje v případech, kdy platí předběžná podmínka (tj. Když hodina
představuje platnou hodinu dne), že po provedení set_hour
, atribut třídy hodina
bude mít stejnou hodnotu jako hodina
. Značka „hour_set:
"popisuje tuto doložku o podmíněnosti a slouží k její identifikaci v případě narušení doby běhu za běhu."
set_hour (hodina: CELÉ ČÍSLO) - Nastavit `hodinu 'na` a_hodinu' vyžadovat valid_argument: 0 <= hodina a hodina <= 23 dělat hodina := hodina zajistit hour_set: hodina = hodina konec
Postkondice a dědictví
V přítomnosti dědictví, rutiny zděděné potomkovými třídami (podtřídami) tak činí se svými platnými smlouvami, tj. s jejich předběžnými a dodatečnými podmínkami. To znamená, že jakékoli implementace nebo předefinování zděděných rutin musí být také zapsány, aby vyhovovaly jejich zděděným smlouvám. Postconditions lze upravit v předefinovaných rutinách, ale lze je pouze posílit.[2] To znamená, že nově definovaná rutina může zvýšit výhody, které poskytuje klientovi, ale nemusí tyto výhody snížit.
Viz také
- Předpoklad
- Návrh na základě smlouvy
- Logika hoare
- Invarianty udržováno podmínkami
- Spouštěč databáze
Reference
- ^ Meyer, Bertrand, Objektově orientovaná konstrukce softwaru, druhé vydání, Prentice Hall, 1997, str. 342.
- ^ Meyer, 1997, str. 570–573.