------------------------------------------------------------------------------------------- -- Auteur : Normand Seguin -- Date : AOUT 2001 -- Sujet : Module GENERIQUE de specifications des operations de base sur -- le type abstrait pile -- Note : Version 2 -- - Type prive -- - Type de l'element est determine (parametre) au moment de l'instanciation -- - Nombre d'element dans la pile egalement generique ------------------------------------------------------------------------------------------- GENERIC -- Parametres du module Type Type_Element IS Private; -- Tous les types peuvent être passés au module par le client Max_Element : Natural := 100; -- Le nombre d'elements est parametrise (defaut = 100) PACKAGE Pile_G IS TYPE Pile IS Limited Private; -- Type prive (nom publique, definition privee) -- Declarations des operations sur la pile PROCEDURE Creer_Pile (P : OUT Pile); -- Initialiser la pile a vide FUNCTION Pile_Vide (P : IN Pile) RETURN Boolean; -- Verification si la pile est vide -- True -> Pile est vide FUNCTION Sommet (P : IN Pile) RETURN Type_Element; -- Retourne la valeur de l'element au sommet de la Pile -- Une erreur (Pile_Vide) sera levee si la pile est vide PROCEDURE Empiler (P : IN OUT Pile; Element : IN Type_Element); -- Ajouter un element a la pile -- l'erreur Pile_Pleine peut etre levee si Max_Element est atteint PROCEDURE Depiler (P : IN OUT Pile; Element : OUT Type_Element); -- Retourner l'element au sommet et le retirer de la pile -- Erreur Pile_Vide sera levee si la pile est vide a l'appel de Depiler PROCEDURE Detruire_Pile (P : IN OUT Pile); -- Detruire la pile Erreur_Pile_Pleine : Exception; -- Si le nombre maximum d'elements est atteint Erreur_Pile_Vide : Exception; -- Si on effectue une operation interdite sur une pile vide PRIVATE -- Definition des types prives SubType T_Index Is Natural Range 0..Max_Element; -- Sous-type pour la gestion du tableau Type Tableau Is Array (1..Max_Element) Of Type_Element; Type Pile Is Record -- Definition du type Pile Sommet : T_Index := 0; Tab : Tableau; End Record; END Pile_G;