POO Bibliothèque permettant de crée des objet de tous les types Ada
bonjour à tous. Merci de me lire.
Dans le cadre de recherches sur le développement de l'intelligence artificielle, je souhaite écrire un programme pour manipulera des objets et des fonctions pour tous les types Ada.
Je souhaite donc écrire un bibliothèque pour créer des objets de tous les types qui doivent tous être stocké dans un même gestionnaire de données.
Je voudrais savoir s'il vous plaît :
Si c'est possible à votre avis ?
Si ce que j'ai commencé à faire est viable ? est-ce pas trop mal organisé ?
Comment faire mieux ?
C'est la première fois que je programme orienté objet, j'aurais voulus savoir si pour faire un gestionnaire de données hétérogènes, je vais pas être embêté quelque part ?
Voici ce que j'ai fait...
j'ai d'abord une classe abstraite Object_Type dans le fichier "mos-objetc.ads".
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
with Ada.Finalization; use Ada.Finalization;
package Mos.objects is
type Object_Type is abstract new Limited_Controlled with null record;
type Object_Type_Access is access all Object_Type'class;
procedure Initialize(Cible : in out Object_Type) is abstract;
procedure Finalize(Cible : in out Object_Type'class) is abstract;
procedure Make(cible : in out Object_Type'class) is abstract;
end Mos.objects; |
J'ai ensuite 11 dérivation de la classe Object_Type, une pour chacun des types de base Ada dans des fichiers distincts dont voici l'éxtrait des Real dérivé du type Object_Type.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
package Mos.Objects.Real is
type Real_Object_Type is
new Object_Type with
record
Real : Float := 0.0;
end record;
type Real_Object_Access is access all Real_Object_Type'Class;
type Action_Type is
access procedure (Cible : in out Real_Object_Type'class);
procedure Make(cible : in out Real_Object_Type);
procedure Initialize(Cible : in out Real_Object_Type);
procedure Finalize(Cible : in out Real_Object_Type);
end Mos.Objects.Real; |
Voici le début de specification du manager:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| with Graph_Handler; use Graph_Handler;
with Mos.Types; use Mos.Types;
with Mos.Objects; use Mos.Objects;
with Mos.Objects.enum; use Mos.Objects.enum;
with Mos.Objects.signed; use Mos.Objects.signed;
with Mos.Objects.modulo; use Mos.Objects.modulo;
with Mos.Objects.real; use Mos.Objects.real;
with Mos.Objects.decimal; use Mos.Objects.decimal;
with Mos.Objects.ordinary; use Mos.Objects.ordinary;
with Mos.Objects.table; use Mos.Objects.table;
with Mos.Objects.article; use Mos.Objects.article;
with Mos.Objects.protect; use Mos.Objects.protect;
with Mos.Objects.tasking; use Mos.Objects.tasking;
package Mos.Objects.Manager is
type Node_Type;
type Node_Access is access all Node_Type;
type Connector_Type is array ( Positive range <> ) of Node_Access;
type Connector_Access is access all Connector_Type;
type Node_Type is
record
Connector : Connector_Access;
Info : Info_Type;
Vertex_Of_Graph : Vertex;
Object : Object_Type_Access;
end record;
type Manager_Type is
record
Root : Node_Access;
Graph : Graph_Handler.Graph;
end record;
end Mos.Objects.Manager; |
Bon, à vrai dire je suis plus embêté que ça puisque j'aurais aimé pouvoir déclarer des types. Mais je suis encore aussi embêté pour les Record, les tableaux, les point-fixes, les enumération, les task, les protected, enfin, je suis très embêté.. Comment faire.
Voici l'état du projet (c'est un peu gros de par les donnée embarquées et lesbibliotèques externe) : http://www.toofiles.com/fr/oip/docum...ta_001tar.html
Le projet s'appelle "Mos"
Merci.
implémentatiion hétérogène.
Bonjour, bonjour Jaizu,
J'en suis toujours au même point, à réfléchir.
Le problème de l'implémentation que vous me proposez est que je ne peut pas mettre tout les type d'objets dans un seul est unique gestionnaire de données.
Existe t-il une solution, je suis au mieux bloquer par la séparation des types limités et les autres.
Si vous aviez une réponse, est t-il possible de mettre tous les objets dans une même gestionnaire de donnée. Un gestionnaire hétérogène quoi ?
Merci pour vos réponses.