Attributs protected dans une hiérarchie de classes - C++ - Programmation
Marsh Posté le 25-09-2009 à 11:44:07
Oui (et c'est vrai quelque soit le langage) c'est l'idéal, mais ce n'est pas suffisant. Il faut que les accessors fassent leur boulot c'est à dire contrôle la validité des données.
Le but est de rendre la modification erroné des attributs impossible afin de rendre le code robuste.
Marsh Posté le 28-09-2009 à 13:52:12
@squashy, tu peux donner une reference plus precise parce que telle que tu cites, j'ai envie de dire que je ne suis pas d'accord. Mais je suis a peut pres sur que le contexte aiderait a mieux comprendre.
@m3z, il te reste a montrer en quoi cela rend le code plus robuste plutot que d'affirmer que cela le fait. Entre des accesseurs et rendre plus accessible le membre, je ne vois que peut de difference. Je n'aime ni l'un ni l'autre, je prefere fournir des interfaces ayant un sens, et faisant donc plus que de recuperer et surtout que de modifier un membre isolement.
Marsh Posté le 15-10-2009 à 09:46:44
+1. Pour être complet, je rajouterais :
Le c++ offre une palette d'outils. Rien ne t'interdit de prendre un tournevis pour planter un clou... mais bon.
Il faut distinguer plusieurs types d'héritages, et surtout leurs raisons. Si ta classe mère est uniquement disposée à fournir des attributs à ses classes filles (avec par exemple un constructeur en protected); rien de t'interdit d'en mettre certain en protected -> ta classe aura alors un objectif, fournir des attributs !
Après, il s'agit souvent de Design Pattern. Ils ont chacun leurs bons et leurs mauvais côtés (et contrairement à ce que certain veulent nous faire croire, y a pas de DP ultime auquel on ne peux échapper !).
Marsh Posté le 25-09-2009 à 09:40:03
Bonjour,
Voilà je me suis plongé dans le langage c++ de Stroustrup et il est mentionné que l'utilisation du mot clé protected pour des attributs dans une hiérarchie de classe est à bannir car ammene à la corruption des données. La norme est elle donc de déclarer tous les attributs en privés et de définir des accesseurs protected si l'utilisation dans des classes filles est nécessaire? Si oui pourquoi?
Merci