Bonjour,
j'ai une class A qui herite de B, B hérite de C etc, etc, etc
Pour vous qu'elle devrait être le niveau maximum pour les héritage successive?
Pour moi, 4-5 est le maximum. Aprés je pense que c'est une mauvaise conception des class
merci
Bonjour,
j'ai une class A qui herite de B, B hérite de C etc, etc, etc
Pour vous qu'elle devrait être le niveau maximum pour les héritage successive?
Pour moi, 4-5 est le maximum. Aprés je pense que c'est une mauvaise conception des class
merci
Salut,
Pour moi : 3.
Une interface (que des virtuelles pures), une classe abstraite (qui factorise des traitements) en-dessous et des classes concrètes encore en-dessous.
Sachant qu'en pratique la classe abstraite n'apparaît que lors d'un remaniement pour réduire une duplication dans les classes concrètes...
MAT.
Salut,
Je ne crois pas qu'il soit opportun de se placer des limites trop strictes à ce sujet.
Si le point de vue de Mat est tout à fait sensé en générale, il n'en demeure pas moins qu'il m'est déjà arrivé d'avoir 5 niveau d'héritage, tout en respectant pleinement le principe énoncé dans effective C++ (ou est-ce l'un des autres) d'avoir recours à l'héritage pour spécialiser, et non pour implémenter.
Mais, si tu mets une limite aux niveaux d'héritage, tu risque de te retrouver face à un problème lorsqu'il s'agira - par exemple - de modéliser les différents êtres vivants.
En effet, bien que cela ne respecte plus forcément le principe de la spécialisation cher à Ac++, si tu dois modéliser les différentes classes, ordres, sous classes, sous ordres et autres de l'évolution, tu n'auras pas le choix, et tu te retrouvera très rapidement avec 8 à 10 niveaux d'héritage... si pas plus.
Et ce n'est pas un domaine isolé, car il serait aussi possible de parler des classes représentant les éléments visuels d'une interface graphique et tant d'autres domaines
De plus, on peut estimer que, si la norme prévoit qu'un compilateur qui la respecte doit au minimum pouvoir supporter 16384 classe de base directes ou indirectes, c'est que le comité ne voulait en tout cas pas placer de restriction trop subjective en la matière, même si l'idée n'est visiblement pas d'inciter les gens à respecter Ac++![]()
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
Nous sommes donc bien d'accord...
Je voulais principalement attirer l'attention sur le fait que je n'ai rien contre le fait de se donner une limite, pour autant qu'elle soit appliquée de manière raisonnée: je suis pour la rigueur, mais contre la rigidité
Une classe politique permettra de faire la distinction entre le kangourou et le koala - qui sont tous les deux des marsupiaux - mais il sera bien plus difficile de faire la distinction entre un éléphant - qui est un parchiderme - et une vache - qui est un bovidé - avec une classe politique, alors que tous deux sont des mammifèresPourquoi de pas plustôt utiliser des class poltique ?
C'est "Advenced C++", qui est l'un des bouquins de la même veine que (more) effective C++ et consorsps :C'est quoi Ac++?![]()
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
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
parchiderme (pour une fois que c'est pas moi), bovidé, ... ce n'est que du classement.
On pourrais faire une class mono cellulaire et une multi-cellulaire qui utilise des politiques pour :
- environnement
- mode de déplacement
- mode de nutrition
- ...
Car avec l'héritage, un pachyderme ne pourra plus jamais évoluer vers un bovidé (ouai bon c'est un peu n'importe quoi...mais c'est le principe) hors l'évolution pourrais très bien vouloir rapprocher un éléphant et une vache vers une même famille....
Partager