Notion de liste
1) Rappel sur les tableaux.
Les tableaux permettent de stocker en mémoire des objets de type ou classe identique. La taille d'un tableau est déclaré à l'exécution grâce à l'opérateur new :
int [] desEntiers;
int dimension = console.readInt("Donnez la dimension svp "); //Utilisation d'une classe de saisie
desEntiers = new int[dimension];
La dimension du tableau ne peut être modifiée; aussi un tableau peut être utilisé lorsque les informations à stocker sont de même type et stables du point de vue de leurs quantités, la solution du sur dimensionnement d'un tableau est rarement satisfaisante.
Exemple d'utilisation d'un tableau.
L'exonet n° 2 de Pierre Loisel traité en algo et en Java fourni un très bon exemple d'utilisation de tableau : stabilité et typage fixes.
Responsabilités de la classe EnsCar :
Ainsi l'ensemble {A, E, F} aura la réprésentation suivante en mémoire :
... | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | ... |
false | true | false | false | false | true | true | false | false | false |
2) Notion de liste
Evolution.
Nous désirons maintenant construire une liste ordonnée de caractères quelconques.
Exemple : a, f, b, G, f, a, n, T
La structure de donnée précédente ne convient plus.
Principe.
Chaque objet appartenant à une liste "connait" un autre objet de la liste, son précédent ou son suivant ( ou les deux ). Ainsi l'information sera chaînée; cet édifice ne fonctionne que si la liste connait le premier objet ( ou le dernier ou les deux ).
Il existe différentes listes qui diffèrent par leurs comportements.
3) Mise en oeuvre d'une liste particulière : la pile.
Comportement d'une pile :
Nous allons entrer plus dans les détails concernant l'implémentation d'une pile, le support utilisé sera celui d'une pile de caractères, en TP nous traiterons une liste de caractères plus élaborée.
Responsabilités :
Classe Caractère :
Classe PileCar :
Il est possible de modéliser les différents échanges de messages entre objets en utilisant un diagramme de séquences :
Diagramme de séquence pour la création d'une pile et l'ajout d'un caractère
Commentaires :
Le message "ajouter un caractère" est émis par l'utilisateur de la classe, ce message concerne un objet de type PileCar, ce message entraine :
Diagramme de séquence pour la suppression d'un caractère
Diagramme de classe.
remarque : l'association entre caractere et PileCar est une composition - lien associatif très fort -, la vie de l'objet caractère est liée à celle de sa pile.
Implémentation