Accesseur et mutateur
Résolu/Fermé
A voir également:
- Accesseurs java
- Waptrick java football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Jeux java itel football - Télécharger - Jeux vidéo
- Java jre - Télécharger - Langages
- Jeux java itel 5360 ✓ - Forum Mobile
5 réponses
Ok merci !
Donc pour résumer des que je voudrais faire un programme qui tient la route je devrais utiliser les accesseurs et mutateurs pour être sur qu'on ne mette pas n'importe quel valeurs a mes variables d'instances. Y'a t-il une autre raison que contrôler les variable qui sont écrite ou même lu ?
merci
Donc pour résumer des que je voudrais faire un programme qui tient la route je devrais utiliser les accesseurs et mutateurs pour être sur qu'on ne mette pas n'importe quel valeurs a mes variables d'instances. Y'a t-il une autre raison que contrôler les variable qui sont écrite ou même lu ?
merci
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
2 juin 2013 à 16:44
2 juin 2013 à 16:44
Bien sûr qu'il y a d'autres raisons, par exemple celle que je décrivais tout à la fin, parfois on veut avoir des accesseurs sur des valeurs alors que les données ne correspondent pas forcément aux attributs déclarés.
Exemple : tu peux avoir un accesseur sur l'age d'une personne, alors qu'en réalité ta variable privée sera la date de naissance...
Exemple : tu peux avoir un accesseur sur l'age d'une personne, alors qu'en réalité ta variable privée sera la date de naissance...
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
2 juin 2013 à 14:46
2 juin 2013 à 14:46
C'est pour donner le contrôle des données aux méthodes de la classe et pas à n'importe qui lors de la réutilisation du code.
Par exemple, si tu veux avoir un double pour la masse d'un objet, alors cette masse doit toujours être positive, or si tu mets cet attribut public, rien n'empêchera de mettre un nombre négatif, ce qui n'aurait plus aucun sens !
Voici deux codes que tu pourrais faire :
Il faut bien comprendre que l'intérêt de la programmation Java c'est la réutilisabilité du code, c'est à dire que tu dois gérer tout ce qui est autorisé ou interdit dans ton code privé, afin qu'il ne soit ensuite possible, dans la partie publique de ne faire que des choses correctes.
En plus, souvent, il y a des méthodes d'accès publique qui contrôlent les données alors que leur représentations en mémoire privée n'a rien à voir.
C'est le cas par exemple de la gestion des dates, représentés en privé par un entier long, mais pour laquelle on a des accesseurs getJour(), getMois()... qui fournissent à l'utilisateur un accès cohérent et sécurisé aux données.
Par exemple, si tu veux avoir un double pour la masse d'un objet, alors cette masse doit toujours être positive, or si tu mets cet attribut public, rien n'empêchera de mettre un nombre négatif, ce qui n'aurait plus aucun sens !
Voici deux codes que tu pourrais faire :
public Chose { public double masse; } Chose truc = new Chose(); truc.masse = -50; // possible mais dangereux ! //------------------------- public Chose { private double masse; public void setPoids(double masse) { if (masse<0) throw new IllegalArgumentException("masse négative"); else this.masse = masse; } } Chose truc = new Chose(); truc.setMasse(-50); // impossible : une exception est générée
Il faut bien comprendre que l'intérêt de la programmation Java c'est la réutilisabilité du code, c'est à dire que tu dois gérer tout ce qui est autorisé ou interdit dans ton code privé, afin qu'il ne soit ensuite possible, dans la partie publique de ne faire que des choses correctes.
En plus, souvent, il y a des méthodes d'accès publique qui contrôlent les données alors que leur représentations en mémoire privée n'a rien à voir.
C'est le cas par exemple de la gestion des dates, représentés en privé par un entier long, mais pour laquelle on a des accesseurs getJour(), getMois()... qui fournissent à l'utilisateur un accès cohérent et sécurisé aux données.
Ha ! Ok je comprends mieux maintenant, ça nous donne vraiment le contrôle !
Dernier petit truc, si je suis dans ma classe, je travaille dedans pour manipuler les variable je devrai utiliser les accesseur et mutateur ou je pourrais directement les changer ?
Merci ;)
Dernier petit truc, si je suis dans ma classe, je travaille dedans pour manipuler les variable je devrai utiliser les accesseur et mutateur ou je pourrais directement les changer ?
Merci ;)
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
2 juin 2013 à 17:16
2 juin 2013 à 17:16
Dans ta classe tu fais ce que tu veux, d'ailleurs il est plus efficace de le faire directement plutôt que d'appeler une méthode intermédiaire qui fera des contrôles qui seront le plus souvent inutiles vu que tu sais que c'est correct.
Par exemple, si tu veux ajouter 5 à la masse de la classe Chose, tu pourrais faire :
La méthode 2 est beaucoup mieux que la méthode 1, en effet tu n'as pas besoin d'appeler une méthode qui va lire la valeur, et une autre qui va l'écrire, en faisant des contrôles de signes inutiles car tu sais que la masse est positive et qu'en rajoutant 5 elle le sera encore !
Cependant, pour des opérations complexes il est intéressant de faire appel aux méthodes déjà faites, même si elles sont dans la même classe, ça évite d'avoir à faire un copier-coller du code, comme ça en cas de modification de la méthode appelé, tu n'auras pas à modifier le code que tu avais copié-collé (ce sera le cas par exemple avec les jours/mois/année des dates)
Par exemple, si tu veux ajouter 5 à la masse de la classe Chose, tu pourrais faire :
public Chose { private double masse; public void setPoids(double masse) { if (masse<0) throw new IllegalArgumentException("masse négative"); else this.masse = masse; } public double getPoids() { return poids; } public void methode1() { setPoids(getPoids()+5); } public void methode2() { masse += 5; } }
La méthode 2 est beaucoup mieux que la méthode 1, en effet tu n'as pas besoin d'appeler une méthode qui va lire la valeur, et une autre qui va l'écrire, en faisant des contrôles de signes inutiles car tu sais que la masse est positive et qu'en rajoutant 5 elle le sera encore !
Cependant, pour des opérations complexes il est intéressant de faire appel aux méthodes déjà faites, même si elles sont dans la même classe, ça évite d'avoir à faire un copier-coller du code, comme ça en cas de modification de la méthode appelé, tu n'auras pas à modifier le code que tu avais copié-collé (ce sera le cas par exemple avec les jours/mois/année des dates)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question