next up previous contents
suivant: Sous-programme de test monter: Description du fichier généré précédent: Partie(s) générique(s)   Table des matières

Gestion des objets ou variables globales

Cette partie est sans doute la plus tactique et mérite quelques explications. Comme nous avons pu le voir dans la description de l'interface graphique, permettre la création de plusieurs objets offre une grande souplesse lors du test du TDA.
Lorsqu'un sous programme possédant un ou plusieurs de ces paramètres globaux (objets) sera appelé, l'utilisateur devra alors spécifier sur lequel il veut travailler.
-- Declaration des objets du TDA T_Arbre_Recherche
Nb_Objets_T_Arbre_Recherche : constant := 1;
subtype T_Indice_T_Arbre_Recherche is Positive range 1 .. Nb_Objets_T_Arbre_Recherche;
type T_Tab_T_Arbre_Recherche is array ( T_Indice_T_Arbre_Recherche ) of T_Arbre_Recherche;
Tab_T_Arbre_Recherche : T_Tab_T_Arbre_Recherche;
-------------------------------------------------------------
-- Fonction génerique permettant de choisir un objet.
-------------------------------------------------------------
generic
   Nom_Type   : in String;
   Nbr_Objets : in Positive;
function Choisir_Objet return Positive;

function Choisir_Objet return Positive is

   subtype T_Indice is Positive range 1 .. Nbr_Objets;
   Choix : T_Indice;

begin -- Choisir_Objet

   if Nbr_Objets = 1 then
      return 1;
   end if;

   loop
      begin

         Put ( "Choisissez le numero de l'objet du type " & Nom_Type & " (" & T_Indice'Image ( T_Indice'Last ) & " objets ) : " );
         Get ( Choix );
         Skip_Line;
         return Choix;

      exception
         when Constraint_Error =>
            Put_Line ( "Mauvaise entree, recommancez." );

         when Data_Error =>
            Skip_Line;
            Put_Line ( "Mauvaise entree, recommancez." );

      end;
   end loop;

end Choisir_Objet;
Cette fonction générique permet de déclarer autant de fonction qu'il y a de variables globales(objets). Ci-dessous la déclaration pour l'unique objet du paquetage ``Arbre_recherche''
-- Fonction de selection d'objet du type T_Arbre_Recherche
function Choisir_Objet_T_Arbre_Recherche is new Choisir_Objet ( "T_Arbre_Recherche", Nb_Objets_T_Arbre_Recherche );
Ce mécanisme à pour avantage d'être suffisamment général pour permettre la gestion de $ 1$ à $ n$ objets.