Pós-condição

Na programação de computadores , uma pós-condição é uma condição ou predicado que sempre deve ser verdadeiro logo após a execução de alguma seção de código ou após uma operação em uma especificação formal . Às vezes, as pós-condições são testadas usando asserções dentro do próprio código. Freqüentemente, as pós-condições são simplesmente incluídas na documentação da seção de código afetada.

Por exemplo: O resultado de um fatorial é sempre um número inteiro e maior ou igual a 1. Portanto, um programa que calcula o fatorial de um número de entrada teria pós-condições para que o resultado após o cálculo fosse um número inteiro e que fosse maior ou igual a 1. Outro exemplo: um programa que calcula a raiz quadrada de um número de entrada pode ter as pós-condições de que o resultado seja um número e que seu quadrado seja igual ao da entrada.

Pós-condições em programação orientada a objetos

Em algumas abordagens de design de software, as pós-condições, juntamente com as pré-condições e invariantes de classe , são componentes do método de construção de software projetado por contrato .

A pós-condição para qualquer rotina é uma declaração das propriedades que são garantidas após a conclusão da execução da rotina. [1] No que se refere ao contrato da rotina, a pós-condição oferece garantia aos potenciais chamadores de que nos casos em que a rotina é chamada em um estado em que sua pré-condição é válida, as propriedades declaradas pela pós-condição são garantidas.

Exemplo de Eiffel

O exemplo a seguir escrito em Eiffel define o valor de um atributo de classe hourcom base em um argumento fornecido pelo chamador a_hour. A pós-condição segue a palavra-chave ensure. Neste exemplo, a pós-condição garante, nos casos em que a pré-condição é válida (ou seja, quando a_hourrepresenta uma hora válida do dia), que após a execução de set_hour, o atributo de classe hourterá o mesmo valor que a_hour. A tag " hour_set:" descreve esta cláusula de pós-condição e serve para identificá-la no caso de violação de pós-condição em tempo de execução.

    set_hour ( a_hour : INTEGER ) - Definir `hora' para `a_hora' requer argumento_válido : 0 <= a_hora e a_hora <= 23 do hora := a_hora garante que hora_set : hora = a_hora final  
            
        
                   
        
              
        
               
        

Pós-condições e herança

Na presença de herança , as rotinas herdadas pelas classes descendentes (subclasses) o fazem com seus contratos, ou seja, suas pré-condições e pós-condições, vigentes. Isto significa que quaisquer implementações ou redefinições de rotinas herdadas também devem ser escritas para cumprir os contratos herdados. As pós-condições podem ser modificadas em rotinas redefinidas, mas só podem ser fortalecidas. [2] Ou seja, a rotina redefinida pode aumentar os benefícios que proporciona ao cliente, mas não pode diminuir esses benefícios.

Veja também

Referências

  1. ^ Meyer, Bertrand , Construção de software orientada a objetos , segunda edição, Prentice Hall, 1997, p. 342.
  2. ^ Meyer, 1997, pp.
Obtido em "https://en.wikipedia.org/w/index.php?title=Postcondition&oldid=1061639236"