next up previous contents index
suivant: Une discipline d'abstraction monter: Exemple : arbres et précédent: Exemple : arbres et   Table des matières   Index

Unicité de l'arbre vide1#1

La définition de la classe AVide a cependant un défaut : chaque invocation du constructeur AVide retourne un nouvel arbre vide, et tous les arbres vides retournés sont distincts. Ce défaut peut être corrigé en interdisant l'invocation de ce constructeur (il suffit de le rendre privé), et en s'assurant de l'existence d'une unique instance de la classe (ce qui s'obtient en en faisant une variable de classe arbreVide) : ceci est un exemple de classe singleton (voir § 3.5). Pour empêcher toute modification de cette variable, on la rend également privée et on y accède en lecture seulement par une méthode de classe val :

class AVide implements ArbreBinaire {
  private static AVide arbreVide = new AVide();
  private AVide(){}
  static AVide val() {
    return arbreVide;
  }

  public boolean estVide() {
    return true;
  }
}

    ArbreBinaire a = 
      new ACons(1,
        new ACons(2, AVide.val(), AVide.val()),
        new ACons(3, AVide.val(), AVide.val()));

Figure: Représentation d'un arbre binaire avec l'arbre vide comme l'unique instance de la classe AVide.
218#218



Rene' LALEMENT 2002-11-07