O que é um invariante de classe?

Na programação e design de computador orientados a objetos, uma classe invariante é um conjunto de regras que podem ser usadas para definir se existe uma instância de objeto em um estado válido. Do ponto de vista do projeto, uma classe invariante é um conjunto de limites entre os quais os dados dentro de um objeto devem ser considerados em um estado funcional adequado. Um invariante de classe pode ser definido na documentação do design ou nos comentários do código -fonte ou, em algumas linguagens de programação, pode ser implementado diretamente no código do computador acionável. Um programa que usa invariantes e afirmações codificados pode fazer com que o programa interrompa a execução ou lança vários erros quando as condições invariantes não forem atendidas. Ao contrário da verificação padrão de erros, os invariantes de classe geralmente são usados ​​apenas com o objetivo de garantir que a implementação interna de uma classe esteja funcionando, e geralmente não estão listados em documentação pública ou interfaces de programação.para uma aula. Uma afirmação, novamente em termos simples, é uma declaração que verifica parte do estado da classe e deve ser avaliada para a execução do programa para continuar. Um exemplo de afirmação é uma afirmação que garante que um determinado número inteiro esteja sempre entre 1 e 10. Quando um invariante de classe é usado, as afirmações são avaliadas para todas as partes relevantes dos dados mantidos pelo objeto, validando essencialmente que todos os dados do objeto estão dentro dos intervalos definidos.

Em muitos casos, o uso de uma classe invariante se assemelha fortemente à verificação de erros padrão, na qual as variáveis ​​são medidas para garantir que estejam dentro dos limites utilizáveis ​​ou não sejam nulos. A diferença entre o uso de invariantes de classe e a verificação de erros padrão, no entanto, é que invariantes e afirmações são predominantemente usados ​​para capturar erros que não devem ocorrer, a menos que haja uma falha intrínseca no código. Outra diferença éNa verificação de erro padrão, tende a envolver a recuperação e as alterações no fluxo de controle do programa, enquanto o resultado de uma falha invariante deve ser o término do programa. A razão pela qual a maioria dos programas termina quando uma verificação invariante de classe falha é porque o objeto está em um estado comprometido e é incapaz, a partir de uma visão de design, para cumprir suas pré-condições e pós-condições necessárias para aderir ao seu contrato de design.

Uma das propriedades de uma classe invariante em linguagens de programação orientadas a objetos, nas quais são implicitamente definidos é que o invariante é um mecanismo herdado por quaisquer subclasses. Isso impede que uma subclasse substitua qualquer cheques invariantes que sejam executados na classe pai. Por fim, isso significa que uma subclasse é incapaz de quebrar o contrato de design estabelecido pela superclasse, o que pode causar resultados imprevisíveis ou erros de programa difícil de encontrar.

OUTRAS LÍNGUAS

Este artigo foi útil? Obrigado pelo feedback Obrigado pelo feedback

Como podemos ajudar? Como podemos ajudar?