IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Dépendances de projets et problème de conception


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Juillet 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 289
    Par défaut Dépendances de projets et problème de conception
    Bonsoir à tous,

    Me revoila encore avec mes problèmes d'agents et de référence circulaire, surement un problème de conception mais je ne vois pas où ...

    Bon j'ai dans mon système des agents :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class IMPEXP cAgent : public cObjet {
    public:
    	cAgent (std::string Nom);
    	virtual ~cAgent ();
            [...]
     
    protected:
    	cListObjets *_Methodes;
    	cMessagerie *_Messagerie;
    };
    J'aimerais pour ces agents leur ajouter des IA : j'ai créé une classe d'interfaçage destinée à gérer les IA de l'agent et à les faire intervenir dans un ordre déterminé (par exemple "lecture des messages dans _Messagerie", "analyse de l'état de l'agent" ...).
    Comme ces IA ne sont pas connus à l'avance mais chargés via fichiers XML, j'ai dans l'idée d'une petite Factory ...

    Pour l'instant les classes Agent et InterfaceIA sont dans le même projet.
    Mon problème vient de la référence circulaire induite par mon projet "Agent" et mes projets "IAs". En effet la factory de création des IA dépend des projets "IAs", mais mes projets IA dépendent également du projet IA pour pouvoir travailler sur les agents (par exemple récupération des messages ou autre).

    J'ai surement un problème de conception mais je ne vois pas où ... et je n'ai pas envie de mettre toutes mes classes IA dans le projet "Agents".

    Quelqu'un a-t-il une idée ?
    Merci d'avance

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Dans le module Agents ajoute une interface pour la factory, l'implementation concrete de la factory qui instancie les IAs concretes faisant partie du module Ia.

    (Sinon il faut passer les std::string en const & et ne pas utiliser de pointeurs nus, mais a la limite ce n'est pas la question)

    MAT.
    (desole pas d'accents sur cette machine)

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Juillet 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 289
    Par défaut
    Par interface t'entends une classe abstraite ? et faire dériver cette classe dans mon projet "IA" pour implémenter les méthodes virtuelles ?
    Je vais tester ce soir mais j'ai des doutes sur l'appel à une méthode d'une classe abstraite ...

    Sinon le const & y'a vraiment de la gagne au niveau temps d'exécution ?
    Et qu'est-ce que t'appelle les pointeurs nus ? (parce que les accesseurs sont dans les [...] )

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Citation Envoyé par Captain_JS Voir le message
    Par interface t'entends une classe abstraite ? et faire dériver cette classe dans mon projet "IA" pour implémenter les méthodes virtuelles ?
    Oui.
    Ensuite tu construits tes Agent en leur passant par référence la factory.

    Citation Envoyé par Captain_JS Voir le message
    Sinon le const & y'a vraiment de la gagne au niveau temps d'exécution ?
    Ca évite de faire une copie.
    En général on passe tous les types autres que les types de base par const & plutôt que par copie.

    Citation Envoyé par Captain_JS Voir le message
    Et qu'est-ce que t'appelle les pointeurs nus ?
    cListObjets* est un pointeur nu, je dirais qu'il vaudrait mieux les passer sous forme de références à la construction et les stocker sous forme de références également.
    (je pensais lors de mon message précédent que les objets étaient créés par Agent mais à la réflexion ça ne doit pas être le cas)

    MAT.

  5. #5
    Membre éclairé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Juillet 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 289
    Par défaut
    En fait pour les pointeurs nus ils sont construits par les agents.

    Pour la factory (si j'ai bien compris), il faut que j'ai une méthode virtuelle pure autre que celle de construction de mes IA, sinon le compilo ne va pas aimer ... parce que le but est que chaque agent créé ses bouts d'IA à son chargement, donc appeller IntfIA->build(...) sur une classe abstraite ça me parait chaud à 1ère vue ... mais j'essaierai quand même ce soir

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Citation Envoyé par Captain_JS Voir le message
    En fait pour les pointeurs nus ils sont construits par les agents.
    Il faudrait mettre les pointeurs dans des std::auto_ptr à ce moment-là, parce que sinon par exemple si la construction de _Messagerie lève une exception alors _Methodes ne sera pas détruit.

    MAT.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Maven/JBoss] Problème de dépendances entre projets
    Par Cafeinoman dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 08/01/2014, 09h24
  2. Petit problème de conception sur access
    Par coooookinette dans le forum Modélisation
    Réponses: 3
    Dernier message: 18/12/2005, 18h24
  3. Réponses: 2
    Dernier message: 24/10/2005, 10h23
  4. Gestion des départements problème de conception
    Par snoopy69 dans le forum Modélisation
    Réponses: 7
    Dernier message: 11/10/2005, 13h08
  5. Problème de conceptions de tables
    Par dtavan dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/05/2004, 23h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo