next up previous contents
suivant: pile en Java monter: Exemple: une pile précédent: Exemple: une pile   Table des matières

pile abstraite

Un des buts de la programmation objet est de réaliser des types de données abstraits.

Considérons le type abstrait de donnée pile:



transparent
Une pile


NOM
    pile[X] 
FONCTIONS
    vide : pile[X] -> Boolean
    nouvelle : -> pile[X]
    empiler : X x pile[X] -> pile[X]
    dépiler : pile[X] -> X x pile[X]
PRECONDITIONS
    dépiler(s: pile[X]) <=> (not vide(s))
    sommet(s: pile[X]) <=> (not vide(s))
AXIOMES
    forall x in X, s in pile[X]
            vide(nouvelle())
            not vide(empiler(x,s))
            dépiler(empiler(x,s))=(x,s)


Il faudrait vérifier que ce type abstrait définit bien ce que l'on entend par une pile. De même il faudrait vérifier que ces déclarations sont bien ``minimales'' et dans quelle mesure on pourrait en donner d'autres équivalentes.

Ici, le type pile est:

Plusieurs implémentations sont possibles:

Quelques remarques: Exercice : Comment faire en C pour qu'un type pile soit générique? Comment peut-on avoir des implémentations différentes de la pile en C sans avoir besoin de recompiler les programmes utilisant ces diverses implémentations?
next up previous contents
suivant: pile en Java monter: Exemple: une pile précédent: Exemple: une pile   Table des matières
Hugues FAUCONNIER 2003-01-09