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

Exemple d'utilisation

Voici la définition d'une méthode toString, utilisant les piles, à ajouter à la classe ArbreBinaire afin d'obtenir une représentation textuelle d'un arbre binaire parcouru en profondeur d'abord ; on utilise ici la première réalisation (§ 4.2), pour laquelle l'arbre vide est représenté par la valeur null :

class ArbreBinaire {
  int étiquette;
  ArbreBinaire gauche;
  ArbreBinaire droit;
  // ...
  public String toString() {
    StringBuffer tampon = new StringBuffer();
    Pile p = new PileParListe();
    p.empiler(this);
    while (!p.estVide()) {
      ArbreBinaire t = (ArbreBinaire) p.dépiler();
      if (t != null) {
        tampon.append(t.étiquette).append(" ");
        p.empiler(t.droit);
        p.empiler(t.gauche);
      }
    }
    return tampon.toString();
  }
}

Ici, PileParListe est une réalisation de l'interface Pile. Il est inutile d'en connaître le contenu pour définir la méthode toString. Si l'on préférait utiliser une autre réalisation de Pile, soit PileParTableau, il suffirait de remplacer l'appel au constructeur PileParListe par un appel au constructeur PileParTableau.

Du fait de la généricité de Pile, la valeur retournée par dépiler est de type Object ; avant de l'affecter à t, on doit lui appliquer un transtypage vers le type ArbreBinaire, de façon à pouvoir accéder aux membres de la classe ArbreBinaire à travers t.



Rene' LALEMENT 2002-11-07