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

Fermé
mariusb - 23 mai 2012 à 14:43
 mariusb - 23 mai 2012 à 18:04
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.
A voir également:

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
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
23 mai 2012 à 14:50
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 ^^
-1
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
23 mai 2012 à 15:41
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.
0
Oki, merci.
0