Attributs protected dans une hiérarchie de classes

Attributs protected dans une hiérarchie de classes - C++ - Programmation

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

Reply

Marsh Posté le 25-09-2009 à 09:40:03   

Reply

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.  


Message édité par m3z le 25-09-2009 à 11:45:48
Reply

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.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

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 !).

 


Message édité par Lavock le 02-11-2009 à 18:28:08
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed