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 ada : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Voici le début de specification du manager:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Partager