Menu

Utilité concrète du mot clé "private" [Résolu/Fermé]

Messages postés
147
Date d'inscription
mardi 2 juin 2015
Statut
Membre
Dernière intervention
20 février 2018
- - Dernière réponse : Guillaume2020
Messages postés
147
Date d'inscription
mardi 2 juin 2015
Statut
Membre
Dernière intervention
20 février 2018
- 1 sept. 2017 à 21:57
Bonjour,

Je programme depuis longtemps en c#, j'ai toujours utilisé"private" par habitude pour ce qui n'avait pas besoin d'être accédé depuis le reste de mon programme, mais je me demande à quoi sert il réellement, puisque en tant que créateur de mon logiciel, je ne vois pas pourquoi je ne mettrai pas tout en public, pour utiliser ce que je veux? Je n'ai jamais eu de problème à oublier de préciser private sur une fonction ou une variable qui ne devait pas être accédée depuis l'extérieur de la classe vu que je n'essayait pas de l'accéder. Quelqu'un peut m'éclaircir là dessus? Ma question va aussi pour protected et tout les modificateurs d'accessibilité, pour élargir ma question c'est surtout "pourquoi tout n'est pas publique?"

Merci

Afficher la suite 

3 réponses

Messages postés
15998
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
15 juin 2019
2370
0
Merci
Bonjour,

"en tant que créateur de mon logiciel, je ne vois pas pourquoi je ne mettrai pas tout en public"
La programmation objet va plus loin que ton seul logiciel, un certain nombre de bibliothèques sont disponibles qui contiennent des multitudes de classes, mais dont l'utilisation est donnée à des développeurs qui n'ont pas eux même conçu la classe en question, n'en connaisse pas le fonctionnement, et pourrait la casser s'il accédait directement à des attributs privés.

Par exemple si je construis une liste avec un tableau et un entier pour la taille, lorsque j'ajoute une donnée à la liste je vais la mettre dans le tableau et augmenter la taille de 1, si ces attributs ne sont pas privés n'importe qui pourrait venir ajouter ou supprimer des éléments dans le tableau, mais il ne pensera peut être pas à modifier la taille. Ce travail c'est à la méthode d'ajout de le faire, c'est elle qui garantie la cohérence des données pour la classe.

Tout ce qui peut être corrompu et provoquer un état instable de l'objet doit être privé et manipulé uniquement par les méthodes dédiées.

Remarque : cela vaut également pour plusieurs personnes qui travaillent sur le même logiciel, en même temps, ou successivement tout au long de la vie du logiciel. La sécurité des accesseurs permet d'empêcher une mauvaise utilisation de la classe, parce que quand tu récupères un projet de plusieurs milliers de classes, la plupart tu ne sais pas à quoi elles servent ou comment elles fonctionnent, elles sont d'ailleurs peut être bogués, donc la prudence est de rigueur mais si c'est publique c'est qu'on peut faire ce que l'on veut sans risque.
Messages postés
13423
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 juin 2019
346
0
Merci
Bonjour, en complémentent de la réponse très explicite de KX (que je salue au passage), imaginons un jeune médecin qui décide d'écrire un logiciel pour gérer sa patientèle.

Il est le seul développeur et pourrait avoir la même réaction que toi.

En tant que médecin, il doit identifier avec certitude les patients. Or il existe des homonymes, donc le nom et le prénom ne suffisent pas.
Donc ce médecin utilise le numéro de sécu, qui ne doit jamais être modifié, même par inadvertance, et être attribué dès la saisie d'un nouveau patient dans le logiciel.

Dans ce cas, ce numéro est demandé en paramètre au constructeur, attribué à un champ privé et fourni au logiciel par une propriété en lecture seule.

Ainsi même si le numéro est affiché dans une textbox, donc modifiable en apparence, la propriété étant en lecture seule (grâce au champ privé), il n'y aura jamais de modification intempestive de l'utilisateur.

De même, le médecin, 6 mois ou 1 an plus tard, quand il fera évoluer le logiciel, ne pourra pas écrire, par erreur un code qui modifie ce numéro en dehors de la classe Patient.
Messages postés
147
Date d'inscription
mardi 2 juin 2015
Statut
Membre
Dernière intervention
20 février 2018
10
0
Merci
D'accord, merci pour vos réponses très claires :)