[Ada][Débutant POO] Problème d'héritage à l'instantiation d'un paquet

Problème d'héritage à l'instantiation d'un paquet [Ada][Débutant POO] - Ada - Programmation

Marsh Posté le 05-09-2013 à 08:49:44    

Bonjour.
J'ai un problème de compilation que je ne pige pas vu que je débute en POO et que je ne pige que dalle à la langue de l'anglais.   :whistle:  
 
Bon, c'est quand même 3 ou 4 paquetage à prendre en considération.
 
j'essaie de modéliser un solver universelle pour jeux multi- joueurs.
 
l'erreur est la suivante :

gnatmake -gnatwa -D obj -o bin/WarGames src/wargames.adb -aIsrc/lib
gcc-4.6 -c -Isrc/ -gnatwa -Isrc/lib -I- -o /home/manuel/Warborg/Warborg_2014/obj/warborg-joshua.o /home/manuel/Warborg/Warborg_2014/src/lib/warborg-joshua.adb
warborg-joshua.adb:17:04: instantiation error at warborg-individu-user-player-game-solver.ads:32
warborg-joshua.adb:17:04: type must be declared abstract or "Initialize" overridden
warborg-joshua.adb:17:04: "Initialize" has been inherited at warborg-individu-user-player-game-solver.ads:32, instance at line 17
warborg-joshua.adb:17:04: "Initialize" has been inherited from subprogram at warborg-wargames.ads:21
gnatmake: "/home/manuel/Warborg/Warborg_2014/src/lib/warborg-joshua.adb" compilation error
make: *** [Wargames] Erreur 4


 
 
Voici les paquetages :
 

Code :
  1. package Warborg.Joshua is                          
  2.  
  3.  
  4.   procedure New_Game;
  5.  
  6. end Warborg.Joshua;


 
 

Code :
  1. with Warborg.I18n;
  2. use Warborg.I18n;
  3.  
  4. with Warborg.Individu.User.Player.Game.Solver;
  5. use  Warborg.Individu.User.Player.Game;
  6. use Warborg.Individu.User.Player;
  7. use Warborg.Individu.User;
  8. use Warborg.Individu;
  9.  
  10. with Warborg.Wargames;
  11. use Warborg.Wargames;
  12. with Gnat.Md5;
  13.  
  14. package body Warborg.Joshua is                          
  15.        
  16.  
  17.   package Wargame_Solver is new Warborg.Individu.User.Player.Game.Solver(Wargame_Type, Heuristic, Uniform, Initialize, Exhausted);
  18.  
  19.  
  20.   procedure New_Game is
  21.      Current_Player : Player_Type;            
  22.      
  23.      Norad  : Wargame_Type;
  24.      
  25.      Joshua : Wargame_Solver.Self_Type;
  26.      
  27.   begin
  28.      Individu_Type(Current_Player).Initialize("Joshua", "null address" );
  29.      User_Type(Current_Player).Initialize(Gnat.Md5.Digest("" ));
  30.      Current_Player.Initialize(Fr);  
  31.      Player_Add(NORAD, Current_Player);
  32.      --  Initialize(Norad);
  33.      --  Initialize(Joshua, Norad);
  34.      --  loop
  35.      --     warborg.Wargames.To_Play(Wargame_Type(NORAD));
  36.      --     Wargame_Solver.Self_Play(NORAD);      
  37.      --  end loop;
  38.      
  39.      
  40.      
  41.   end New_Game;
  42.      
  43. end Warborg.Joshua;


 
 

Code :
  1. with Warborg.Individu.User.Player.Game;
  2. use Warborg.Individu.User.Player.Game;
  3. use Warborg.Individu.User.Player;
  4. package Warborg.Wargames is
  5.  
  6.   type Wargame_Type is new Game_Type with private;  
  7.   procedure Initialize(Wargame : in out Wargame_Type);
  8.   procedure Player_Add(Wargame      : in out Wargame_Type'Class;
  9.                        Player       : in Player_Type'Class);
  10.   procedure Player_Remove(Wargame   : in out Wargame_Type'Class;
  11.                           Player    : in Player_Type'Class);
  12.  
  13.   procedure To_Play(Wargame : in out Wargame_Type);
  14.  
  15.   function Heuristic (Wargame : in Wargame_Type) return Float;
  16.   -- Une fonction qui retourne la valeur du jeu pour le solver.
  17.  
  18.   function Uniform (Wargame : in Wargame_Type) return Float;
  19.   -- Une fonction qui retourne la valeur du jeu pour le(s) joueur(s) opposant(s).
  20.  
  21.   function Initialize return Wargame_Type;
  22.   -- Une fonction qui retourne la représentation initiale du jeu.
  23.  
  24.   function Exhausted(Wargame : in Wargame_Type) return Boolean;  
  25.   -- Une fonction qui retourne Vrai si le jeu est terminé.  
  26.  
  27. private                  
  28.  
  29.  
  30.   type Multi_Player_Type;
  31.   type Multi_Player_Access is access Multi_Player_Type;
  32.   type Wargame_Type is new Game_Type with
  33.      record
  34.         Multi_Player : Multi_Player_Access;
  35.      end record;
  36.  
  37.  
  38. end Warborg.Wargames;


 
 

Code :
  1. generic
  2.   type Usr_Type is new Game_Type with private;
  3.   -- Le jeu, ça représentation.
  4.  
  5.   with function Heuristic (Usr : in Usr_Type) return Float;
  6.   -- Une fonction qui retourne la valeur du jeu pour le solver.
  7.  
  8.   with function Uniform (Usr : in Usr_Type) return Float;
  9.   -- Une fonction qui retourne la valeur du jeu pour le(s) joueur(s) opposant(s).
  10.  
  11.   with function Initialize return Usr_Type;
  12.   -- Une fonction qui retourne la représentation initiale du jeu.
  13.  
  14.   with function Exhausted(Usr : in Usr_Type) return Boolean;  
  15.   -- Une fonction qui retourne Vrai si le jeu est terminé.
  16.  
  17. package Warborg.Individu.User.Player.Game.Solver is
  18.  
  19.   type Self_Type is limited private;  
  20.  
  21.   procedure Initialize(self : in out Self_Type; Usr : in Usr_Type'class);
  22.  
  23.   procedure Self_Play(Self : in out Self_Type);
  24.   function Usr (Self : in Self_Type) return Usr_Type;
  25.   type Option_Type is access function (Usr : in Usr_Type) return Usr_Type;
  26.   type Options_Type is array (Positive range <> ) of Option_Type;
  27.   type Options_Access is access Options_Type;
  28.   function Options(Self : in Self_Type) return Options_Type;
  29.   procedure Set_Options(Self : in out Self_Type;
  30.                         Options : in Options_Type);    
  31. private
  32.   type Self_Type is new Usr_Type with
  33.      record                    
  34.         Usr          : Usr_Type;
  35.         Full_Options : Options_Access;
  36.      end record;  
  37.  
  38. end Warborg.Individu.User.Player.Game.Solver;


 
 

Code :
  1. package Warborg.Individu.User.Player.Game is
  2.        
  3.   type Game_Type is abstract tagged private;      
  4.  
  5.   procedure Initialize (Game : in out Game_Type'class);
  6.  
  7.   procedure To_Play(Game : in out Game_Type'Class) is abstract;
  8.        
  9.   function Total(Game : in Game_Type'Class) return Float;
  10.  
  11.   procedure Points_Add(Game : in out Game_Type'Class;
  12.                        Points : in Float);
  13.  
  14. private
  15.  
  16.   type Game_Type is tagged
  17.      record
  18.         Total : Float := 0.0;  
  19.      end record;
  20.  
  21. end Warborg.Individu.User.Player.Game;


 
 
Pouvez vous m'aider s'il vous plaît.
Merci.
 
edit : et vous allez pouvoir télécharger le paquet complet des sources code sur sourceforge.net projet Warborg version 2014-0.0.1a


Message édité par Profil supprimé le 05-09-2013 à 08:55:34
Reply

Marsh Posté le 05-09-2013 à 08:49:44   

Reply

Marsh Posté le 05-09-2013 à 09:54:54    

Hello !
 
j'ai changé ceci :

Code :
  1. function Initialize return Wargame_Type;
  2.  -- Une fonction qui retourne la représentation initiale du jeu.


 
en ceci :
 

Code :
  1. procedure Initialize(Wargame : in out Wargame_Type);
  2.   -- Une procedure qui donne la représentation initiale du jeu.


 
Et j'ai adapté le reste du code ; ça compile et s'exécute en tout cas.
 
Merci. je reviendrai peut-etre avec de nouvelle(s) interrogation(s)...


Message édité par Profil supprimé le 05-09-2013 à 09:55:11
Reply

Sujets relatifs:

Leave a Replay

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