Intérêt d'avoir Getter+Setter en java [Fermé]

Signaler
-
 mariusb -
Bonjour,
Le principe d'encapsulation en java (comme sans doute dans d'autres langages) voudrait que, en général, un champ soit déclarée "private", afin de ne pouvoir être manipulé que depuis la classe courante.
Pour y avoir accès depuis l'extérieur, on peut utiliser les accesseurs getVariable, et éventuellement setVariable (plus rarement utilisé).

Cependant, par défaut, lorsqu'on demande à un IDE (Eclipse ou Netbeans) de générer les accesseurs pour un champ, par défaut, il va nous générer les deux accesseurs, par conséquent, nous aurons ceci :
...
private Type variable;
public Type getVariable(){return this.variable;}
public Type setVariable(Type variable){this.variable = varible;}
...

Je ne comprends pas très bien l'intérêt de déclarer la variable private si c'est pour ajouter deux accesseurs qui permettent de connaître sa valeur et de la modifier à volonté depuis l'extérieur. Pour moi, l'intérêt de l'encapsulation est d'empêcher l'extérieur de modifier les variables locales n'importe comment, et/ou de masquer les variables qui n'ont pas besoin d'être visibles de l'extérieur, mais cet avantage est perdu avec les deux accesseurs.

Bref, si quelqu'un peut m'expliquer l'intérêt d'un tel choix dans la philosophie POO...
Merci.

2 réponses

EDIT : Ca répond pas très bien à ta question... désolé j'avais pas super bien lu.

Salut,

Voir cette discussion ou il y a pas mal d'éléments de réponses :
http://www.commentcamarche.net/forum/affich-25231905-java-this
Messages postés
16037
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
21 septembre 2020
2 674
Parce que ton IDE est bête, il donne un comportement par défaut à ces get/set, mais le but est bien évidemment de l'adapter à ton problème, et par exemple interdire les set de certaines valeurs, ou alors les contrôler, par exemple avec des conditions sur la valeur (exemple: interdire les entiers négatifs).

En ce moment j'utilise un programme avec des angles, ma valeur est en radian, mais les get/set font la conversion en degré parce que c'est plus intuitif pour un humain de taper 45 degrés plutôt que 0,707106781 radian... mais ce n'est qu'un exemple ^^
Messages postés
9687
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
21 juin 2020
1 192
je ne dirait pas qu'il est bête, comme tout ces outils de pré code, il fait la base. Charge ensuite à l'utilisateur de faire ce qu'il faut pour les modifier.
Un autre exemple utile est si ta variable est un tableau, ça évite de sortir du domaine.
Oki, merci.