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 :
package Np is pragma Pure (Np); end Np;
|
Le paquetage "np-human", mon type abstrait T_Info(Hidden : Boolean).
Spécification :
Code :
with Ada.Unchecked_Deallocation; with Ada.Finalization; package Np.human is type String_Access is access all String; type Info(Hidden : Boolean) is abstract new Ada.Finalization.Limited_Controlled with private; procedure Initialize(I : in out Info); procedure Finalize(I : in out Info); private type Info(Hidden : Boolean) is abstract new Ada.Finalization.Limited_Controlled with record Info : String_Access; end record; procedure Free is new Ada.Unchecked_Deallocation(String, String_access); end Np.Human;
|
Coprs : dans lequel j'espérais saisir l'info.
Code :
with Text_Io; package body Np.human is procedure Initialize(I : in out Info) is begin null; -- ici, j'expérais saisir l'info; end Initialize; procedure Finalize(I : in out Info) is begin Free(I.Info); end Finalize; end Np.Human;
|
Le paquetage "np-human-status, mon type effectif de classe T_Info(False).
Spécification :
Code :
package Np.Human.Status is type T_Status is new info(False) with null record; procedure Initialize(I : in out T_Status); procedure Finalize(I : in out T_Status); end Np.Human.Status;
|
Corps :
Code :
with Text_Io; package body Np.Human.Status is procedure Initialize(I : in out T_Status) is begin Text_Io.Put("Status : " ); end Initialize; procedure Finalize(I : in out T_Status) is begin null; end Finalize; end Np.Human.Status;
|
Le main :
Code :
with Np, Np.Human, Np.Human.Status; use Np; procedure Main is Status : Human.Status.T_Status; begin null; end Main;
|
Comment devrais-je m'y prendre ?
Merci bien pour votre aide.