Java pour l'informatique industrielle
Chapitre 1. Introduction aux objets
Chapitre 2. Les structures de contrôle
2.1. Abstraction et modularité
2.2. La comparaison
2.3. Le choix
2.4. Les constructeurs
2.5. La surcharge
2.6. La répétition
2.7. Les variables
2.8. Le domaine de valeur
2.8.1. Les assertions
2.8.2. Les exceptions
2.9. Exercice
Chapitre 3. Unifier et réutiliser
Chapitre 4. Modèle, Vue et Contrôle
Chapitre 5. Les entrées/sorties
Page d'accueilTable des matièresNiveau supérieurPage précédenteBas de la pagePage suivante

2.8.1. Les assertions

class CompteurNBits { private int etat; private byte n; /** @param n nombre de bits pour coder l'état, 0 < n < 31 */ CompteurNBits(byte n) { assert((n > 0) && (n <= 30)) : "0 < n < 31"; this.n = n; } /** @param n nombre de bits pour coder l'état, 0 < n < 31 * @param etat valeur initiale de l'état, 0 ≤ etat < 2n*/ CompteurNBits(int etat, byte n) { this(n); // forcément la première instruction du constructeur assert((etat >= 0) && (etat < (1 << n)) : "0 ≤ etat < 2n"; this.etat = etat; }

Avant le :, on met la propriété qui doit être vraie, l'invariant. Après le : on met une chaîne de caractères qui représente le message à afficher au cas où la propriété ne serait pas vérifiée.

Non seulement, on obtient un message d'erreur si l'utilisateur ne vérifie pas le cahier des charges, mais en plus, la construction de l'objet (ou plus généralement le bloc en cours d'exécution) est interrompue. Ici, nous sommes donc certains de ne pas pouvoir créer d'objets avec un état invalide.

De plus, comme les champs sont privés et que nous avons fait l'analyse par invariants, nous sommes sûr que les champs auront toujours une valeur dans le domaine de valeur attendu.

Source : CompteurNBits.java

Page d'accueilTable des matièresNiveau supérieurPage précédenteHaut de la pagePage suivante