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 :

Héritage d'héritage, d'héritage etc


Sujet :

C++

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut Héritage d'héritage, d'héritage etc
    Bonjour tout le monde,
    Je suis sur un projet où bon nombre de classe sont des p'tites p'tites p'tites... fillotes de la classe mère .
    Je pense (même quasiment sûr) qu'il y a un problème de conception mais ma question n'est pas là: est-ce que ce type de classes nuisent au performances (dans un cadre général)?

    Pour ma part je pense que oui car lors de l'instanciation d'un objet nécessite forcément l'instanciation de tous ces parents.
    Mais est-ce juste une idée reçue?

    Merci d'avance!

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 264
    Points : 725
    Points
    725
    Par défaut
    Bonjour,

    Effectivement, chaque constructeur va appeler le constructeur de la classe parente, qui lui même appellera le constructeur de sa classe parente.. et ainsi de suite.
    Il en va de même lors de la destruction de l'objet.

    Si tes relations d'héritages ne sont pas pleinement justifiées, tu vas te retrouver avec des traitements et une occupation mémoire superflus.
    "By and large I'm trying to minimize mentions of D in C++ contexts because it's as unfair as bringing a machine gun to a knife fight." - Andrei Alexandrescu

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 576
    Points : 1 528
    Points
    1 528
    Par défaut
    Salut,

    Si l'héritage est correct, alors tes objets doivent savoir faire beaucoup de chose (étant donnée que chaque fille sait faire au moins ce que fait la mère). Ce n'est pas choquant (on peut imaginer une classe EtreVivant, dérivée en Animal, dérivée en Vertébré, dérivée en Mammifère, etc.... jusqu'à arriver à Humain) mais par contre, utiliser un objet aussi polyvalent pour des opération nécessitant certaine performances n'est généralement pas une bonne idée. Dans ce cas, mieux vaut parfois définir une classe spécialisé dans son domaine.

    Donc pour ta question je dirait oui et non. Les perfs en prennent un coup, mais si l'utilisation de tels objets est justifié (cad, que l'algo qui les utilise a besoin de tous les services fournis par l'objet), on peut difficilement faire autrement.

    Après, instancier un parent qui ne possède pas ou peu d'attribut et qui ne fait rien dans son constructeur ne coute quasiment rien.
    La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer. - Antoine de Saint-Exupéry

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    Merci pour vos réponses.
    Je m'en doutais bien mais bon... Donc c'est parti pour de la lecture/compréhension de code pas documenté .

    Encore merci.

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/04/2014, 16h52
  2. Héritage multiple, surcharge de méthodes, etc
    Par Stnaire dans le forum jQuery
    Réponses: 0
    Dernier message: 04/03/2012, 00h25
  3. [débutant] héritage, polymorphisme, etc !
    Par remsrock dans le forum C#
    Réponses: 4
    Dernier message: 31/10/2008, 12h33
  4. [Postgres] Héritage + Clés
    Par k-reen dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 21/05/2003, 16h37
  5. Héritage entre Forms
    Par BarBal dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 17h44

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