thiosyiasar
Messages postés186Date d'inscriptionlundi 11 mars 2002StatutMembreDernière intervention30 novembre 2010
-
28 févr. 2005 à 21:07
thiosyiasar
Messages postés186Date d'inscriptionlundi 11 mars 2002StatutMembreDernière intervention30 novembre 2010
-
1 mars 2005 à 14:54
Protected ou Private ?
Salut à tous.
En fait j'ai une petite question qui me turlupine un peu depuis quelques temps.
J'ai débuté la programmation orienté objet par le java.
Les classes que j'ai développé en Java ont toujours été pensées au mieux pour le besoin du
moment. Cependant rien n'empêche d'avoir un oeuil ouvert sur le future, en pesant qu'il
serait probablemenet utile de les spécialiser via l'héritage.
Pour résumer un membre accessible est 'public', un membre encapsulé est 'protected' sauf cas particulier, si il n'appartient qu'a cette spécialisation de la classe et qu'il est accessible sous une autre forme.
Or
Par défaut en C# tout ce qui est caché est 'Private'
Je constate donc que l'on a beaucoup moins de possiblité d'héritage.
LA QUESTION :
Pourquoi java favorise les membres protégés et pourquoi C# favorise les membres privées
Cela pose-t-il un pb de performance ? (mise à part la (pré)compilation, je ne vois pas)
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 28 févr. 2005 à 21:45
Microsoft, par le biais de la plate forme .Net, veux proner la sécurité.
Je crois que ceci amène cela.
Par défaut, tout est private, ainsi si quelqu'un veut heriter une
classe de ton assemblage, il n'aura pas accés a des méthodes ou
variables qui pourrait faire foirer la classes en cas de mauvaise
utilisation.
Il y a surement d'autres explications, mais c'est comme ca que je vois la chose.
Cependant, c'est pas pour ca quil y a "moins de possibilité d'hétitage"
pour reprendre tes mots. Rien ne t'empeche de spécifier ce que tu veux
qui soit accessibles aux classes filles en specifiants tes méthodes et
propriétés en protected.
TheSaib
Messages postés2367Date d'inscriptionmardi 17 avril 2001StatutMembreDernière intervention26 décembre 200723 28 févr. 2005 à 23:58
Microsoft favorise surtout le code "propre"
Des variables privées pour l'instance de la classe.
Des Accesseurs / Propriétés public pour tout le monde
Des Accesseurs / Propriétés protected pour les classes dérivées.
Des Accesseurs / Propriétés internal pour l'assembly en cours.
Dans tout les cas tu ne devrais pas mettre un champs avec une visibilité autre que private.
thiosyiasar
Messages postés186Date d'inscriptionlundi 11 mars 2002StatutMembreDernière intervention30 novembre 20103 1 mars 2005 à 12:41
C'est dommage que Microsoft voit le développement de cette façon ! Ca confirme une tendance où le développeur devient de moins en moins responsable...<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
Si le programmeur est 'mauvais' ou mal intentionné, rien ne l'empêche de toutes façon d'aller mettre la 'grouille'. Une classe bien documentée fournissant un comportement de base à plus d'utilité qu'une classe (usine à gaz) essayant de tout faire sans exposer une partie de son fonctionnement interne
Maintenant, pour répondre à TheSaid, je n'ai pas la même définition du code propre. C'est plutôt une vision fermée et, c'est vrai, un peu plus sécurisée
Même si il faut rester prudent sur le protected, le private doit rester un cas particulier sinon qu'elle est l'intérêt d'hériter ? Autant encapsuler la classe (oui c'est un peu radical). Enfin c'est mon point de vue.
Non mais dites donc, les développeurs java ont il plus confiance entre eux que les développeurs C# ??? Les développeurs java sont ils plus compétents en conception objet ?
En tout cas merci pour vos réponse, même si nos points de vues sont divergents
Dans tout les cas les attributs sont encapsulés. De plus le fait de faire ainsi permet de faire de la vérification de type ou de saisie ce qu'une simple variable protected ne peux pas faire lors de son affectation.
::|The S@ib|::
MVP C#.NET
Vous n’avez pas trouvé la réponse que vous recherchez ?
Je ne cherche pas à te convaincre, je ne fait pas de l'évangélisation de quoi que ce soit. Mais je pense que tu auras l'occasion de te rendre compte plus tard de l'impotance de la protection des données et par conséquence de l'intêret de bien caracteriser la portée de tes attributs. Et je t'assure que cela n'a rien a voir avec le : "Je code bien , tu codes mal" ou de confiance réciproque entre développeur.