POO, Ada.Finalization

POO, Ada.Finalization - Ada - Programmation

Marsh Posté le 31-10-2010 à 21:03:32    

bonjour,
 
Je débute en programmation orientée objet et j'ai un problème d'initialisation d'objet contrôlé.
 
Ce que je voudrais faire : C'est initialisé une variable de type accès à une chaîne englobé dans un enregistrement abstrait contrôlé et limité.
 
Voila ce que j'ai fait.
 
le paquetage "np", racine de la bibliothèque.
Spécification :

Code :
  1. package Np is
  2.   pragma Pure (Np);
  3. end Np;


 
Le paquetage "np-human", mon type abstrait T_Info(Hidden : Boolean).
Spécification :

Code :
  1. with Ada.Unchecked_Deallocation;
  2. with Ada.Finalization;
  3. package Np.human is
  4.  
  5.   type String_Access is access all String;
  6.   type Info(Hidden : Boolean) is
  7.     abstract new Ada.Finalization.Limited_Controlled with private;
  8.  
  9.  
  10.   procedure Initialize(I : in out Info);
  11.   procedure Finalize(I : in out Info);
  12. private
  13.   type Info(Hidden : Boolean) is
  14.     abstract new Ada.Finalization.Limited_Controlled with
  15.      record
  16.         Info : String_Access;
  17.      end record;
  18.   procedure Free is new Ada.Unchecked_Deallocation(String, String_access);
  19. end Np.Human;


 
Coprs : dans lequel j'espérais saisir l'info.
 

Code :
  1. with Text_Io;
  2. package body Np.human is
  3.  
  4.   procedure Initialize(I : in out Info) is
  5.   begin
  6.      null; -- ici, j'expérais saisir l'info;
  7.   end Initialize;
  8.  
  9.   procedure Finalize(I : in out Info) is
  10.   begin
  11.      Free(I.Info);
  12.   end Finalize;
  13.  
  14. end Np.Human;


 
Le paquetage "np-human-status, mon type effectif de classe T_Info(False).
Spécification :

Code :
  1. package Np.Human.Status is
  2.  
  3.   type T_Status is new info(False) with null record;
  4.   procedure Initialize(I : in out T_Status);
  5.   procedure Finalize(I : in out T_Status);
  6.  
  7. end Np.Human.Status;


Corps :

Code :
  1. with Text_Io;
  2. package body Np.Human.Status is
  3.  
  4.   procedure Initialize(I : in out T_Status) is
  5.   begin
  6.      Text_Io.Put("Status : " );
  7.   end Initialize;
  8.  
  9.   procedure Finalize(I : in out T_Status) is
  10.   begin
  11.      null;
  12.   end Finalize;
  13. end Np.Human.Status;


 
Le main :

Code :
  1. with Np, Np.Human, Np.Human.Status;
  2. use Np;
  3. procedure Main is
  4.  
  5.   Status : Human.Status.T_Status;
  6. begin
  7.  
  8.   null;
  9. end Main;


 
Comment devrais-je m'y prendre ?
Merci bien pour votre aide.

Reply

Marsh Posté le 31-10-2010 à 21:03:32   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed