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 :

[heritage] downcasting : une erreur de conception?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut [heritage] downcasting : une erreur de conception?
    Bonjour à tous !!!

    J'ai un problème pas trop grave, mais que j'aimerai bien résoudre proprement!
    Vous trouverez ci joint une partie de mon diagramme des classes...

    CFP est une classe abstraite car la méthode setImageReferenceIR() ne peut pas être définie de la même manière dans toutes les classes filles. Celà m'arrange car de toute façon, je préfère que CFP soit non instanciable, même si elle a un sens ici...
    Ma configuration est telle que setImageReferenceIR() possède la même implantation dans Antenne que dans HR. La seule différence est pour la classe LPT.

    Mon projet concerne pour l'instant l'étude de phénomène physiques à l'aide des classes HR et Antenne, et pourra peut-etre à terme concerné la classe LPT.

    Mon problème est le suivant:
    J'ai pour l'instant implémenté des algorithmes dans la classe CFP qui marchent très bien pour Antenne et HR, mais pas pour LPT.
    Etant donné qu'il y a qu'une seule petite fonction membre qui diffère, est ce que je pourrai pas "downcaster" setImageReferenceIR? Ou alors quis-je obliger de définir tous mes algorithmes dans chacunes des classes filles pour pouvoir bénéficier de setImageReferenceIR() ???

    Merci à vous!
    Images attachées Images attachées  

  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,

    Je dirais que visiblement les algorithmes communs à Antenne et HR mais non à LPT ne devraient pas être factorisées dans CFP, qui regroupe les traitements communs à tous, mais dans une nouvelle classe située dans la hiérarchie entre CFP et Antenne/HR.

    Au passage c'est un peu déstabilisant toutes ces abbréviations, même si je ne doute pas qu'elles fassent partie du langage du domaine

    MAT.

  3. #3
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par Mat007
    Au passage c'est un peu déstabilisant toutes ces abbréviations, même si je ne doute pas qu'elles fassent partie du langage du domaine

    MAT.
    Oui, mais j'avais oublié de joindre le diagramme, ça t'aidait pas aussi !!!!
    Ca fait parti du domaine, mais c'est mieux avec un diagramme des classes!!

  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
    Ok donc non, en effet, je n'avais pas saisi que HR est un LPT (comme dans is a)...

    Dans ce genre de situation la solution est souvent de mettre toutes les classes filles au même niveau, dans un premier temps en dupliquant les méthodes identiques, puis tout de suite après de factoriser les traitements communs petit à petit dans de nouvelles classes (éventuellement abstraites mais c'est pas obligé) juste au-dessus des classes filles qui dupliquent.
    Au final il y a l'interface commune tout en haut et les classes filles tout en bas, et au milieu des classes dont le but est de factoriser les implémentations communes des classes filles.
    La grosse difficulté consiste à trouver des noms adéquates pour toutes ces classes, c'est parfois loin d'être trivial !

    MAT.

  5. #5
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Euh.. je vois bien ce que tu veux dire MAT, mais ma modélisation me plaît là car elle reflète vraiment la physique qui est derrière. On peut pas dire que ce soit grave de s'en éloigner, m'enfin bon...

    Le truc qui est franchement bizarre dans mon cas ici, c'est que HR et Antenne ont vraiment le même type de comportement pour cette "méthode", alors que LPT n'a pas le même. De plus, HR est vraiment une partie de LPT!!!!
    J'espère que vous me comprenez !

    Donc je sèche un peu là...

  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 poukill
    De plus, HR est vraiment une partie de LPT!!!!
    L'héritage a un sens très précis qui n'est a priori pas celui-ci si j'ai bien compris.
    Si HR dérive de LPT c'est que HR est un LPT, dans le sens où partout où on utilise/parle de LPT on pourrait mettre un HR à la place.

    Au fait ça signifie quoi LPT et HR ?

    MAT.

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

Discussions similaires

  1. Trouvez une erreur de conception dans un code
    Par ultimate_manx dans le forum C
    Réponses: 11
    Dernier message: 02/05/2007, 22h37
  2. C++Builder fait une erreur de calcul
    Par gandf dans le forum C++Builder
    Réponses: 7
    Dernier message: 03/01/2004, 22h27
  3. [VB6] Source D'une erreur
    Par krest dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 16/07/2003, 17h33
  4. [procédure PG] Une erreur mystérieuse...ou pas
    Par doohan dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 09/07/2003, 17h16
  5. Ne pas formater une erreur
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 2
    Dernier message: 18/03/2003, 14h13

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