Skip to main content

Qu'est-ce qu'une classe invariante?

Dans la programmation et la conception informatiques orientées objet, une classe invariante est un ensemble de règles qui peuvent être utilisées pour définir si une instance d'objet existe dans un état valide.Du point de vue de la conception, une classe invariante est un ensemble de limites entre lesquelles les données d'un objet doivent tomber pour être considérées dans un état fonctionnel approprié.Une classe invariante peut être définie dans la documentation de conception ou les commentaires de code source ou, dans certains langages de programmation, peut être directement implémenté dans un code informatique exploitable.Un programme qui utilise des invariants codés et des assertions peut entraîner la cesseur d'exécution du programme ou de lancer diverses erreurs lorsque les conditions invariantes ne sont pas remplies.Contrairement à la vérification des erreurs standard, les invariants de classe sont généralement utilisés uniquement dans le but de s'assurer que l'implémentation intérieure d'une classe fonctionne, et ils ne sont généralement pas répertoriés dans la documentation publique ou les interfaces de programmation.

À partir d'un niveau très basique, une classe invarianteuseEssentiellement est une collection d'affirmorations pour une classe.Une affirmation, encore une fois en termes simples, est une déclaration qui vérifie une partie de l'état de la classe et doit évaluer TRUE pour que l'exécution du programme continue.Un exemple d'affirmation est une déclaration qui garantit qu'un entier donné se situe toujours entre 1 et 10. Lorsqu'un invariant de classe est utilisé, les affirmations sont évaluées pour toutes les parties pertinentes des données détenues par l'objet, validant essentiellement que toutes les données de laL'objet se trouve dans les plages définies.

, en utilisant un invariant de classe, la vérification des erreurs standard, dans laquelle les variables sont mesurées pour s'assurer qu'elles sont dans les limites utilisables ou ne sont pas nulles.La différence entre l'utilisation des invariants de classe et la vérification des erreurs standard, cependant, est que les invariants et les affirmations sont principalement utilisés pour capturer des erreurs qui ne devraient pas se produire, sauf s'il y a un défaut intrinsèque dans le code.Une autre différence est que la vérification des erreurs standard a tendance à impliquer la récupération et les modifications du flux de contrôle du programme, tandis que le résultat d'une défaillance invariante devrait être la résiliation du programme.La raison pour laquelle la plupart des programmes se terminent lorsqu'un chèque invariant de classe échoue est que l'objet est dans un état compromis et n'est pas en mesure, d'une vue de conception, de remplir ses conditions préalables et post-conditions nécessaires pour respecter son contrat de conception. L'un desLes propriétés d'une classe invariante dans les langages de programmation orientées objet dans lesquelles ils sont implicitement définis est que l'invariant est un mécanisme hérité par toutes les sous-classes.Cela empêche une sous-classe de remplacer les vérifications invariantes qui sont effectuées dans la classe parent.En fin de compte, cela signifie qu'une sous-classe n'est pas en mesure de rompre le contrat de conception établi par la superclasse, ce qui pourrait provoquer des résultats imprévisibles ou des erreurs de programme difficiles à trouver.