Université de Nice-Sophia Antipolis Deug MIAS-MI 1
Algorithmique & Programmation 2002–2003
TP N 13
Les types abstraits, les piles, les files
Buts :
– montrer comment la notion d’interface en Java permet d’implémenter celle de type abstrait
vue en cours.
– montrer que les objets de Java ressemblent à ce qu’en Cours et TD nous appelons des poin-
teurs sur des articles 1
– réaliser des implémentations des types abstraits pile et file.
1 Une représentation des piles
Vous trouverez dans les ressources une collection de fichiers que vous devrez examiner avec
le plus grand soin car ils sont destinés à vous servir de modèles pour la suite.
–Stack.java déclare une interface de Java : une interface ressemble à une classe, mais tous
les attributs y sont forcément static et final, il n’y a aucun constructeur et les méthodes
sont toutes abstraites (elles n’ont pas de corps). En fait, il ne s’agit que de l’énumération
des méthodes que doit nécessairement posséder une classe pour avoir le droit de mettre
dans son en-tête implements Stack et pour que ses instances aient donc le droit d’être
déclarées Stack.
–StackA.java déclare une classe qui implémente l’interface Stack avec le triplet d’une
capacité, d’un tableau de cette capacité et d’un indice dans ce tableau. Cela correspond
presque exactement à ce que, dans le Cours et les TD, on aurait probablement déclaré :
type T_contenu = ?
T_descripteur_de_pile = article
tailleMax : entier
data : tableau 1 .. tailleMax de T_contenu
sommet : 0 .. tailleMax
T_pile = pointeur sur T_descripteur_de_pile
finarticle
–StackB.javadéclare une classe qui implémente l’interface Stack avec un chaînage simple.
La classe Cell qui implémente les cellules du chaînage a été déclarée à l’intérieur de la
classe StackB ce qui facilite les choses en permettant que ses attributs, même déclarés
private, soient visibles n’importe où dans StackB. Une telle classe s’appele une classe
emphmembre (elle est un membre, comme les attributs et les méthodes, de sa classe englo-
bante). Dans le Cours ou les TD, on aurait probablement écrit :
type T_contenu = ???
T_descripteur_de_cellule = article
contenu : T_contenu
suivant : T_cellule
finarticle
1. Il s’agit d’une ressemblance particulièrement intéressante à relever, mais ils ne faut cependant pas croire que les
objets sont exactement des pointeurs sur des articles.
1