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 :

[POO] Hierarchies d'aggregation parallèles


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 69
    Par défaut [POO] Hierarchies d'aggregation parallèles
    Bonjour,

    Je cherche à savoir : quelle est la meilleure méthodes pour gérer des hierarchies d'aggregation parallèles (exemple ci dessous)?

    Je pense que c'est un problème récurrent, et pourtant je ne trouve pas de design pattern sur le sujet. Y a-t-il une solution récurrente?
    =====================================
    Exemple de problème :
    Dans un jeu video j'ai une classe VoitureTempsReel. VoitureTempsReel contient N SiegeTempsReel qui contiennent chacun M MateriauTempsReels.

    Au niveau de la configuration, j'édite des classes : VoitureConfig, SiegeConfig, et MateriauConfig. Ces classe sont utilisées pour initialiser VoitureTempsReel. (Elles permettent l'édition + (de)sérialisation automatique).

    Lorsque je sauvegardes des informations temps réelle, de la même manière je vais avoir : VoitureSave, SiegeSave, MateriauSave qui contiennent les informations qui ne sont pas dans VoitureConfig etc.

    Cette archi me convient plutôt bien, sauf que :
    - VoitureConfig contient des SiegeConfig qui contiennent des MateriauConfig. Idem pour les XXXSave. On a donc des hierarchies d'aggrégation parallèles, dont le + haut niveau est relié (par l'initialisation des infos), et le reste est transmis en cascade.
    - On a sauvent la copie des infos de VoitureConfig dans les attributs de VoitureTempsReel (et idem pour les autres) à faire et maintenir à la main.

    =====================================
    Background : j'ai déjà codé des jeux vidéos professionnellement. Je suis (très) à l'aise en général, mais cette question me turlupine depuis des lustres.

    Avez vous des remarques / suggestions? Y a-t-il un design pattern adapté?
    Et si j'utilisais un préprocesseur custom (j'en ai déjà écris) cela aurait-il du sens ?

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Personnellement, je fais un sapin-fourchu, ou un peigne, selon ce que tu visualise le mieux.

    C'est une hiérarchie de classe métier, et pendant de chacune, des classes sœurs (save et config), souvent templatisées pour partager le code.

    il n'y a pas souvent d'héritage entre les sœurs des classes métiers.

    Par ailleurs, tu n'as pas de hiérarchie dans ton exemple.
    un siège n'est pas une voiture, une voiture n'est pas un siège, même si celle-ci est composée de ceux-là.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 69
    Par défaut
    Merci pour ta réponse.

    Détail : je ne suis pas convaincu que le mot "hierarchie" ne s'utilise que pour de l'héritage. C'est pourquoi je l'ai utilisé, clairement sans parler d'héritage. Dans tous les cas, tu as bien compris effectivement ce que je voulais dire dans mon premier thread, où je parlais d'aggrégation (comme le titre).

    Je comprends ce que tu décris comme structure en peigne. Cependant, dans ce cas tu ne peux pas instancier complètement une classe métier à partir d'une classe soeur (il manque les aggrégats/fils/elements contenus, non) ?

  4. #4
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par défaut
    ça se résout avec quelques template.

    tes seules vraies classes sont voitures, siege etc..
    les config et autres utilitaires s’écrivent façon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    template<class T> struct config
    {
      // le code
    };
     
    typedef config<voiture> voitureconfig;
    pas besoin de préprocesseur

  5. #5
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    En principe, tu vas aussi avoir une banque de configuration (les fichiers de données, en général), matérialisés par une ou plusieurs factory basées sur les identifiants.

    Ce qui veut dire que tu aurais probablement des appels tels que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //il faudra surement en faire des singletons.
    Factory<voiture> garage("voitures.data");
    Factory<siege> chaiserie("chaises.data");
    Factory<materiau> usine("materials.data");
     
    voiture v = garage.get("voiture1");
    //ce qui provoque, en interne des appels à usine.get(…)

Discussions similaires

  1. [SSAS] [2K5] Aggregations et hierarchies
    Par BoromSikim dans le forum SSAS
    Réponses: 3
    Dernier message: 12/01/2011, 10h21
  2. SSAS aggregation hierarchie
    Par TheJoe dans le forum SSAS
    Réponses: 1
    Dernier message: 08/08/2008, 19h58
  3. [POO] PHP 5 : aggregate sans refkit
    Par laurent_h dans le forum Langage
    Réponses: 40
    Dernier message: 18/12/2006, 12h57
  4. Gestion du port paralléle sous 2000
    Par kardex dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 05/01/2006, 19h47
  5. [COM-ATL] Savez vous ce qu'est l'aggregation ?
    Par akecooco dans le forum MFC
    Réponses: 1
    Dernier message: 11/10/2002, 15h12

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