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

Langage C++ Discussion :

Visiteur : très grand nombre de classes à visiter


Sujet :

Langage C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 199
    Par défaut Visiteur : très grand nombre de classes à visiter
    Bonjour,

    J'ai une classe visiteur qui doit réaliser une action sur une hierarchie de classes que je ne peux modifier. Mon souci est que cette hierarchie est importante et donc que je vais me retrouver avec beaucoup (plusieurs centaines) de fonctions "Visit". Y a t'il un moyen élégant de 'limiter" ou "diviser" ce nombre ou est-ce normal et fréquent avec les visiteur?

    Merci d'avance

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Par défaut
    Si ton visiteur doit effectuer des comportement différents pour chaque classes de la hiérarchie, je vois difficilement comme tu pourrais faire autrement que de définir tout ces comportement, et donc ces centaines de fonctions.

    La question que je me poserais serait plutôt de savoir si tu as réelement besoin d'une si grosse hiérarchie et de la faire visiter ? Pourrais-tu détailler ta hiérarchie, le but ect ... ?

  3. #3
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Je m'interroge moi aussi sur les décisions qui ont pu mener à avoir une hiérarchie de classes si importante, et je subodore très fortement qu'il y ait un problème de conception qui se soit répété plus d'une fois, entre autres, lorsque la décision de l'héritage a été prise.

    Cependant, étant donné que tu nous dis être dans l'impossibilité de modifier cette hiérarchie de classes, je te proposerais de déléguer les responsabilités au niveau des visiteur

    Je présumes en effet que, si tu arrive à un nombre aussi important de classes intervenant dans ta hiérarchie, elle doit présenter un certain nombre de niveaux.

    Comme un petit dessin vaut mieu qu'un grand discours, nous pouvons décemment estimer que tu obtient un diagrame de classe proche de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
                     A                  -->niveau 0
                     |        
           ---------------------
          /          |          \
         B           C           D      -->niveau 1
        / \         / \         / \
       /   \       /   \       /   \ 
      E     F     G     H     I     J   -->niveau 2
     /|\   /|\   /|\   /|\   /|\   /|\
    K L M N O P Q R S S T U V W X Y Z 1 -->niveau 3
    ...
    Plutôt que de vouloir créer un visiteur qui manipule les objets de type A (la classe de niveau 0), et qui doit donc prendre en compte l'ensemble des classes qui en dérivent (de B à... 1), pourquoi ne pas créer trois visiteurs manipulant les classes de niveau 1 (respectivement les B, les C et les D), et qui ne doivent alors prendre en compte que les classes de niveau 2 qui en héritent (respectivement E et F, G et H et pour le dernier I et J), voire 6 visiteurs travaillant sur des objets passant pour être des classes de niveau 2

    Evidemment, pour une hiérarchie à N niveau, tu pourrais décider de créer un visiteur manipulant des objets passant pour être d'un type dont le niveau est N-1, N-2 ou N-3, selon ce qui t'intéresse le plus.

    J'ai en effet beaucoup de mal à croire, même si tu manipule "quelque part" une collection d'objet passant pour être du type de niveau 0, que tu finisse par te retrouver dans une situation dans laquelle tu devrais... visiter l'ensemble de ces types, sans distinctions.

    Au final, tu aurais, certes, plus de visiteurs à créer, mais, en retour, il deviendront tous beaucoup moins complexes et donc plus flexibles
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. Manipulation de très grands nombres
    Par BernardT dans le forum Langage
    Réponses: 6
    Dernier message: 07/07/2006, 16h26
  2. Précision d'un très très grand nombre
    Par sniperseb dans le forum Langage
    Réponses: 6
    Dernier message: 05/04/2006, 19h38
  3. Réponses: 2
    Dernier message: 22/12/2005, 18h16
  4. Trés grand nombre
    Par rteuteu55 dans le forum C++Builder
    Réponses: 10
    Dernier message: 15/11/2005, 11h28
  5. Une unité pour gérer des très grands nombres
    Par M.Dlb dans le forum Langage
    Réponses: 2
    Dernier message: 09/09/2003, 12h07

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