Le domaine d'intérêt des travaux touchant le Génie Logiciel, il paraît bien naturel de présenter l'exemple de la pile. On s'intéresse cependant plus ici au mode d'implantation de la pile qu'à sa qualité de type abstrait de données générique.
2. La forme générique de la pile
4. Conclusion
On identifie les propriétés exportés par le type pile :
INTERFACE OF pile_générique;
USE pile_paramètres;
TYPE pile:RECORD rep:pileRep; END RECORD;
PROCEDURE Initialiser( p:INOUT pile );
PROCEDURE Mettre( p:INOUT pile; e:IN element );
PROCEDURE Prendre( p:INOUT pile; e:OUT element );
END INTERFACE;
On peut remarquer en particulier que (1) le type des éléments n'est pas spécifié (ce sera un paramètre de généricité) et (2) la représentation du type pile n'est pas non plus donné (le type est défini comme un type dérivé de la représentation du type pileRep, lequel sera aussi un paramètre de généricité).
La "spécification" du corps
On identifie des « traitements de bas niveau », indépendants du choix de la représentation :
BODY OF pile_générique;
USE pile_paramètres;
PROCEDURE Initialiser( p:INOUT pile );
BEGIN
annuler-pointeur(p.rep);
END;
PROCEDURE Mettre( p:INOUT pile; e:IN element );
BEGIN
incrémenter-pointeur(p.rep);
écrire-valeur(p.rep, e);
END;
PROCEDURE Prendre( p:INOUT pile; e:OUT element );
BEGIN
lire-valeur(p.rep, e);
décrémenter-pointeur(p.rep);
END;
END BODY;
Entre Mettre et Prendre on observe la classique symétrie dans l'ordre des « traitements de bas niveau ».
La "spécification" du module des paramètres
On donne ici la déclaration du type pileRep qui doit définir la représentation de la pile et les différentes procédures dont il faudra écrire le corps à l'instanciation du module :
INTERFACE OF pile_paramètres;
TYPE element;
TYPE pileRep;
PROCEDURE annuler-pointeur( p:INOUT pileRep );
PROCEDURE incrémenter-pointeur( p:INOUT pileRep );
PROCEDURE décrémenter-pointeur( p:INOUT pileRep );
PROCEDURE écrire-valeur( p:INOUT pileRep; e:IN element );
PROCEDURE lire-valeur( p:INOUT pileRep; e:OUT element );
END INTERFACE;
On attend en plus la définition du type des éléments element.