Condiție prealabilă

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În informatică, în special în programare , o condiție prealabilă este o condiție sau un predicat care trebuie să fie întotdeauna adevărat înainte de a executa o secțiune de cod sau înainte de o operație într-o specificație formală . Dacă se încalcă o condiție prealabilă, efectul produs de secțiunea de cod devine nedefinit și, prin urmare, poate furniza sau nu rezultatul scontat. Problemele de securitate pot apărea din condiții prealabile incorecte. Condițiile preliminare sunt de obicei incluse în documentația secțiunii de cod care le necesită. Condițiile preliminare sunt uneori verificate folosind afirmații în codul în sine, iar unele coduri au construcții sintactice specifice pentru a face acest lucru. De exemplu: factorial este definit doar pentru numere întregi mai mari sau egale cu zero. Astfel, un program pentru a calcula factorialul unui număr va avea condițiile prealabile ca numărul să fie un număr întreg și să fie mai mare sau egal cu zero.

În programarea orientată pe obiecte

Condițiile prealabile în programarea orientată obiect sunt o parte esențială a proiectării contractului . Proiectarea contractului include, de asemenea, noțiuni de condiții postale și invarianți . Condiția prealabilă pentru fiecare rutină definește fiecare constrângere pe care fiecare obiect trebuie să o îndeplinească pentru a realiza execuția cu succes. Din punctul de vedere al dezvoltatorului, acesta face parte din rutina responsabilității apelantului. Apelantul este apoi obligat să se asigure că sunt îndeplinite condițiile prealabile înainte de a apela rutina. Rezultatul pentru apelant este exprimat în condițiile postale ale apelantului. [1]

Exemplu în Eiffel

Rutina din exemplul următor scris în Eiffel are un argument întreg ca argument de intrare care trebuie să aibă valoarea unei ore din zi, de la 0 la 23, inclusiv. Condiția prealabilă urmează cuvântului cheie require . Specifică faptul că acel argument trebuie să fie mai mare sau egal cu zero și mai mic sau egal cu 23. Eticheta „ valid_argument: ” descrie această condiție prealabilă și servește la identificarea acesteia dacă o precondiție este încălcată în timpul execuției.

 set_hour ( a_hour : INTEGER )
            - Setați „ora” la „o_ora”
        solicita
            argument_valid : a_hour > = 0 și a_hour <= 23
        do
            ora : = o_ora
        asigura
            oră_set : oră = o_oră
        Sfârșit

Condiții prealabile și moștenire

În prezența moștenirii, rutina moștenită din clasa descendentă (subclasă) moștenește, de asemenea, condițiile prealabile. Aceasta înseamnă că orice implementare sau redefinire a rutinelor moștenite trebuie să fie scrise în concordanță cu contractul moștenit. Condițiile preliminare pot fi transformate în rutine redefinite, dar pot fi doar mai slabe. [2] Adică, redefinirea rutinei trebuie să pună mai puține constrângeri asupra clientului, nu să le mărească.

Notă

  1. ^ Meyer, Bertrand , Obiect-Oriented Software Construction , ediția a doua, Prentice Hall , 1997, p. 342.
  2. ^ Meyer, 1997, pp. 570-573.

Elemente conexe