Předpoklad - Precondition
v programování, a předpoklad je stav nebo predikát to musí vždy platit těsně před provedením nějaké části kód nebo před operací v a formální specifikace.
Pokud je porušena předběžná podmínka, účinek sekce kód se stává nedefinovaným, a proto může, ale nemusí provádět zamýšlenou práci. Bezpečnostní problémy mohou nastat kvůli nesprávným předpokladům.
Předpoklady jsou často jednoduše zahrnuty v dokumentaci příslušné části kódu. Předpoklady se někdy testují pomocí stráže nebo tvrzení v samotném kódu a některé jazyky mají specifické syntaktické konstrukce.
Například: faktoriál je definováno pouze pro celá čísla větší nebo rovna nule. Program, který vypočítá faktoriál vstupního čísla, by tedy měl předpoklady, aby číslo bylo celé číslo a aby bylo větší nebo rovno nule.
V objektově orientovaném programování
Předpoklady v objektově orientovaný vývoj softwaru jsou podstatnou součástí design podle smlouvy. Design podle smlouvy zahrnuje také pojmy podmínka a invariant třídy.
Předpoklad pro jakoukoli rutinu definuje veškerá omezení stavu objektu, která jsou nezbytná pro úspěšné provedení. Z hlediska vývojáře programu to představuje část smlouvy s rutinním volajícím. Volající je poté povinen zajistit, aby předběžná podmínka platila před voláním rutiny. Odměna za úsilí volajícího je vyjádřena v volané rutině podmínka.[1]
Eiffelova příklad
Rutina v následujícím příkladu napsaná v Eiffelova bere jako argument celé číslo, které musí být platnou hodnotou pro hodinu dne, tj. např. 0 až 23, včetně. Předpoklad následuje po klíčovém slově vyžadovat
. Určuje, že argument musí být větší nebo roven nule a menší nebo roven 23. Značka "valid_argument:
"popisuje tuto klauzuli předběžné podmínky a slouží k její identifikaci v případě porušení běhové podmínky.
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
Předpoklady a dědičnost
Za přítomnosti dědičnosti to dědí rutiny zděděné potomkovými třídami (podtřídami) s platnými předpoklady. To znamená, že jakékoli implementace nebo předefinování zděděných rutin musí být také napsány, aby vyhovovaly jejich zděděné smlouvě. Předpoklady lze upravit v nově definovaných rutinách, ale mohou být pouze oslabeny.[2] To znamená, že nově definovaná rutina může snížit povinnost klienta, ale nikoli jej zvýšit.
Viz také
- Návrh na základě smlouvy
- Guard (počítačová věda)
- Dodatečná podmínka
- 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, s. 342.
- ^ Meyer, 1997, str. 570–573.