|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Membre éclairé
![]() Inscription : juin 2006 Messages : 767 ![]() |
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 :
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 :
Code :
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. |
||||||
|
|
00
|
|
|
#2 | ||
|
Nouveau Membre du Club
![]() Inscription : octobre 2010 Messages : 21 ![]() |
Bonjour Jovalise.
Tout d'abord, je vous conseillerai cet article (pour ada 95) et ce "rationale for ada 2005". Ils parlent des fabriques (patron de conception) en Ada, qui semblent bien correspondre à vos besoins. Si vous souhaitez plutôt faire votre fabrique à la main, dans l'idée de "déclarer un type à la volée" (avec toutes ses opérations), la solution la plus simple et proche me venant en tête serait quelque chose comme : Code ada :
p.s. : je ne sais pas si ça vient de moi, mais il semblerait que toofiles n'ait plus votre archive. |
||
|
|
10
|
|
|
#3 | ||
|
Membre éclairé
![]() Inscription : juin 2006 Messages : 767 ![]() |
Code :
C'est très élégant ! Je vais tenter une interprétation des références, mais je suis anglophobe ![]() Merci Jaizu ! Pour l'archive ell n'est plus disponible pour moi non plus. |
||
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() Inscription : juin 2006 Messages : 767 ![]() |
Si je met un type accès à Any_Conrete_Type dans mon type Generic_Object, C'est bon ?
Merci pour vos réponse. |
|
|
00
|
|
|
#5 | ||||||||||
|
Membre éclairé
![]() Inscription : juin 2006 Messages : 767 ![]() |
Je n'ai pas compris l'utilité de la démarche en fait.
J'ai un peu tourné mon code dans tout les sens. Je ne sais pas si ce que je suis parvenu à faire est correct et représentatif de ma solution. Bon, la bibliothèque s'appelle cnnc.ads Je me demande si j'ai pas un peu tout confondu ce coir. Au résultat, je doit pourvoir appliquer des opération sur des objets qui son la propriété d'utilisateurs. Ici, on ne se préoccupe pas des utilisateurs. Voici ce que j'ai fait : Code :
Code :
Code :
Code :
![]() C'est à dire j'ai pasé la journé à étudier d'autre piste. 2Le main pour la forme : Code :
|
||||||||||
|
|
00
|
|
|
#6 | ||||||||
|
Nouveau Membre du Club
![]() Inscription : octobre 2010 Messages : 21 ![]() |
Citation:
Citation:
![]() Dans ce cas, je vais donc Comme je n'ai malheureusement pas pu vérifier, j'ai fait les suppositions suivantes de ce que j'ai vu : les méthodes initialize / make / finalize vont faire la même chose modulo le type. De plus, il y a un pointeur de classe pour chaque type dérivé. Voilà ce à quoi je pensais pour l'implémentation générique : Code ada :
Ce qui permet ensuite d'écrire : Code ada :
On aurait alors quelque chose de fortement similaire au paquetage real du premier post en théorie. Ada fournit aussi de quoi manipuler les types : Code ada :
Il y a aussi le paquetage Ada.Tags qui devrait se montrer intéressant ainsi que l'attribut 'tag. En espérant que ça vous sera utile. |
||||||||
|
|
00
|
|
|
#7 | |
|
Membre éclairé
![]() Inscription : juin 2006 Messages : 767 ![]() |
Citation:
Merci encore Jaizu. |
|
|
|
00
|
|
|
#8 |
|
Membre éclairé
![]() Inscription : juin 2006 Messages : 767 ![]() |
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. |
|
|
00
|
|
|
#9 |
|
Futur Membre du Club
![]() Inscription : mars 2011 Messages : 25 ![]() |
Bonjour,
Je vous donne schématiquement mon idée pour construire et gérer un univers d'objets qui peuvent être très généraux à travers leur encapsulation dans les dérivés d'un type d'objet racine Père.
Il est bien sûr possible d'automatiser la création de certains types d'objets descendant de Obj via des génériques. Créer à part un container ordonné qui sera l'univers de vos objets (atomes, couples, listes, ensembles...) avec pour relation d'ordre la relation d'ordre générale du type Obj. Attention ce container de doit pas être d'un type descendant du type Obj. Bien sûr il faudra savoir gérer cet univers d'objets lors de leurs créations, modifications et disparitions. Par exemple à sa création on peut faire en sorte que tout objet soit inséré dans le container univers. Cela permettra d'ailleurs d'éviter les doublons. On peut aussi associer à chaque objet O de l'Univers un container d'objets amis (pas un objet ensemble descendant du type Obj ! sinon on aura des problèmes de cohérence) qui rassemble tous les autres objets de l'univers dans lesquels O intervient. Si O venait à être modifié ou plus radicalement finalisé avant disparition, son container d'amis donnerait tous les autres objets à mettre à jour (il y a un joli tri topologique dans le graphe des relations entre objets à mettre en œuvre pour que l'univers puisse évoluer en douceur). |
|
|
00
|
|
|
#10 |
|
Membre éclairé
![]() Inscription : juin 2006 Messages : 767 ![]() |
Emilie, merci pour l'effort d'édition et d'explication, mais je regrète de n'avoir rien compris à ce quez je devrais faire.
|
|
|
00
|
|
|
#11 |
|
Futur Membre du Club
![]() Inscription : mars 2011 Messages : 25 ![]() |
@Jovalise
Je vous donne en illustration, le schéma simplifié d'héritage entre les types des objets de l'univers que je vous propose. |
|
|
00
|
|
|
#12 |
|
Membre éclairé
![]() Inscription : juin 2006 Messages : 767 ![]() |
Merci encore pour votre attention.
Je pense pas avoir les compétence que vous croyez que j'ai. Je comprends un peu le langage Ada, extérieurement au reste. Pour faire une transition, français -> Ada, doit falloir avoir un bagage. Je passe même pas par les pseudo code. L'image c'est bien, mais ça me dis pas comment le spécifier et les limited_controlled, je me demande si c'est pareil ? Je comprends rien à la doc Ada non plus souvant in english text, ce qui me rebute. Bref, je pensais pas du tout que c'était si complelxe que ça de faire un gestionnaire étherogène. |
|
|
00
|
|
|
#13 | ||||||
|
Membre éclairé
![]() Inscription : juin 2006 Messages : 767 ![]() |
Bonjour,
Je me re- penche sur le sujet, c'est pas simple mais j'ai une question, j'espère que vous comprendrez mon intérêt du sujet. J'écris tout de suite une nouvelle bibliothèque en prenant l'esprit de chacun des participants du sujet. Jaizu Emilie. Internet, et Ada. J'ai d'abord déclaré un paquetage Libmy, une bibliotèque vide. J'ai ensuite déclaré un paquetage en Libmy.Virtual qui déclre une classe abstraite de garde pour une corection éventuelle du niveau d'abstraction quelle représente, soit la classe parente de tout les objets. En suite j'ai déclaré une classe abstraite objet dérivé de virtual parce que je pense à ce niveau pouvoir ajouter d'autre classe enfant de virtual qui ne seront pas des objets. Enfin, j'ai déclaré un paquetage générique generic element qui doit me permettre de gérer grâce à un gestionnaire de donnée, tous les elements de classe objets. Ce qui donne ceci : Code ada :
Code ada :
Code ada :
Je cherche maintenant, comment organiser ma bibliothèque pour déclarer mon paquetage de gestion de données (d'objet virtuel). Merci pour vos conseil. Peut-être serait-il judicieux de vous dire où je veux en venir ? Je m'attarde de temps à autre l'analyse du système général, et j'espère un jour modéliser celui ci au mieux.
__________________
Mon développement |
||||||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com