-- Auteur: -- Gérer un stock de matériel informatique. package Stocks_Materiel is CAPACITE : constant Integer := 10; -- nombre maximum de matériels dans un stock type T_Nature is (UNITE_CENTRALE, DISQUE, ECRAN, CLAVIER, IMPRIMANTE); type t_Materiel is limited private; type T_Array is array (1..CAPACITE) of T_Materiel; type T_Stock is limited private; procedure Creer (Stock : out T_Stock) with Post => Nb_Materiels (Stock) = 0; function Nb_Materiels (Stock: in T_Stock) return Integer with Post => Nb_Materiels'Result >= 0 and Nb_Materiels'Result <= CAPACITE; procedure Enregistrer ( Stock : in out T_Stock; Numero_Serie : in Integer; Nature : in T_Nature; Annee_Achat : in Integer ) with Pre => Nb_Materiels (Stock) < CAPACITE, Post => Nb_Materiels (Stock) = Nb_Materiels (Stock)'Old + 1; function Nb_Materiels_DEAD (Stock: in T_Stock) return Integer with Post => Nb_Materiels_DEAD'Result >= 0 and Nb_Materiels_DEAD'Result <= CAPACITE; procedure change_state (Stock: in out T_Stock; state: in Boolean; identifiant: in Integer); procedure supprimer_materiel (stock: in out T_Stock; identifiant: in Integer); procedure supprimer_all_dead (stock: in out T_Stock); private type T_Materiel is record ID: Integer := -1; Nature: T_Nature; Annee: Integer; Etat: Boolean; end record; type T_Stock is record Elements: T_Array; Taille: Integer := 0; end record; end Stocks_Materiel;