Je vois bien souvent du code où le programmeur utilise à tout va l'héritage public, alors que la plupart du temps un héritage privé ou bien une composition (mettre un objet de type "la classe de base de laquelle on voulait dériver" comme attribut de la classe "qui devait être la classe fille") suffirait et remplirait la même mission.
L'héritage public est à quelques exceptions près "seulement" utile lorsque l'on va utiliser le polymorphisme grâce à un pointeur ou une référence vers un objet du type d'une classe mère.
C'est pourquoi je vous sollicite pour vous demander quand est-ce que vous utilisez l'héritage, lequel (public, protégé, privé) et pourquoi ?
Ce sujet permettra peut-être à quelques uns de corriger des fautes de conception ou d'accélérer leurs programmes (un héritage inutile remplaçable par une composition permet dans ce cas d'éviter de créer une table virtuelle pour le polymorphisme).
Alp dit : C'est pourquoi je vous sollicite pour vous demander quand est-ce que vous utilisez l'héritage, lequel (public, protégé, privé) et pourquoi ?
Moi j'utilise personnellement principalement l'héritage public car je ne vois pas trop d'intérêt à ne pas l'utiliser... Je ne vois vraiment non plus ce que tu entends par composition.
Alp dit : mettre un objet de type "la classe de base de laquelle on voulait dériver" comme attribut de la classe "qui devait être la classe fille"
Je ne vois pas l'intérêt de mettre un objet de Type A dans la class B à la place de faire hériter B de A. Certes un objet B possèdera un objet A dans ses propriétés mais il n'aura en aucun cas accès sur A comme il l'aurait par héritage...
Très bonne initiative de mettre en commun les connaissances sur ce sujet ;)
__________________________
............ Curtis: RTS 3D .............. ......
........... TeamMoteurProg...........
Salut,
je suis bien étonné que ce sujet ait sucité aussi peu de réponses ... c'est un débat très interessant. et très éducatif...
Donc voilà, moi j'utilise principalement l'héritage public lors de création de méthodes virtuelles. comme par exemple lors de la création d'une classe Animal, celle-ci contient la méthode virtuelle setDescriptionAnimal( string ); .. et celle-ci est donc incrémentée dans les différentes classes filles du style "Vache" "Chien" ... blablabla ... :)
C'est un exemple très simple qui permet un peu de se faire une idée de quand utiliser le public. par exemple pour un agenda avec gestion profonde des contacts. Les contacts seront representés par des objets sur une des classes "Societe" "PersonnePhysique" ... Qui sont filles de la classe Contact et hérite ainsi des propriétés tels "setPrenomContact( )" ou encore "setAdresseContact( )" ...
Ensuite j'aimerai pouvoir créer un héritage privé :-P comme tu le précise dans la première ligne ^^
j'utilise l'héritage protégé principalement pour la réception d'action. du style envoi de données, réception de données par différents protocole et également, comme tu t'en doutes pour les réceptions de signaux Qt ^^
Bon ben je vois pas ce que je peux encore en dire, je suis prêt à en discuter des heures, j'adore ce thème ... :)
Peace ^^
__________________________
Grégory S.
eVias Web & Software Solutions.
Développement Web et logiciel en tout genre et Open Source.