Articles

Qu’est-ce qu’une méthode de mutateur en Java ?

Découvrez ce qu’est une méthode de mutateur en java et les avantages de l’utilisation de mutateurs et de méthodes d’accesseurs. Toutes les explications incluent des exemples à illustrer.

Capuchon d'image de carte

Dans cet article, vous apprendrez quelle méthode de mutateur en java et quelle méthode d’accesseur. De plus, vous comprendrez les avantages de l’utilisation des méthodes mutator et accessor et verrez quelques exemples java.

Les concepts de méthode de mutateur et d’accesseur sont étroitement liés à la programmation et à l’encapsulation orientées objet. Dans le cas où vous n’êtes pas familier avec la programmation orientée objet. J’ai inclus une brève introduction ci-dessous; cependant, si vous souhaitez plus de détails, consultez la documentation.

Table des matières

Récapitulatif de la programmation orientée objet

La programmation orientée objet signifie que vous résolvez des problèmes représentant les entités du problème sous forme de classes. Une classe a un état et des méthodes où l’état est un ensemble de variables contenant les données pertinentes dans notre représentation. Et les méthodes déterminent les opérations que notre classe peut effectuer.

Par exemple, nous pouvons définir le cercle de classe :

public class Circle {private float radius; public Circle(float newRadius) { this.radius = newRadius; } public double area(){ return Math.PI * Math.pow(radius, 2); } }

Cette classe représente le concept de cercle. L’état de la classe circle a le rayon et une méthode nommée area(), qui renvoie l’aire du cercle.

Vous pouvez ajouter le code suivant à la classe Circle pour le tester :

public static void main(String args){ Circle circle1 = new Circle(3); System.out.println(circle1.area()); }

Sortie:

28.274333882308138

Récapitulatif de l’encapsulation

Nous avons défini une classe en utilisant la programmation orientée objet et créé l’objet circle1 de la classe Circle. Et si je voulais modifier le rayon de l’objet circle1. En l’état actuel du code, je ne peux pas le changer car il n’y a pas de méthode pour accéder à la variable radius. Tout ce que je peux faire est de créer un nouvel objet cercle avec un rayon différent. Que puis-je faire pour corriger cela?

Vous pouvez faire deux choses; l’un conduira à une classe bien conçue, et l’autre à une conception pauvre et difficile à maintenir. Une option consiste à déclarer le champ radius en tant que champ public, il est donc accessible en dehors de la classe. Voir les modifications ci-dessous :

public class Circle {public float radius; public Circle(float newRadius) { this.radius = newRadius; } public double area(){ return Math.PI * Math.pow(radius, 2); } public static void main(String args){ Circle circle1 = new Circle(3); System.out.println(circle1.radius); circle1.radius = 5; System.out.println(circle1.radius); } }

Sortie:

3.05.0

L’autre option crée des méthodes pour accéder et modifier le champ radius, ce qui vous permet de masquer les détails de l’implémentation. Ce mécanisme est également appelé encapsulation.

Définition de la méthode Mutator en Java

La méthode mutator en java, et tout langage de programmation orienté objet, est une méthode qui vous permet de modifier les variables à l’intérieur de la classe. Private est le niveau d’accès pour les variables, ce qui signifie que la seule façon de modifier les variables est d’utiliser les méthodes de mutateur. De cette façon, les méthodes de mutateur peuvent contrôler la validité et la qualité des données enregistrées dans la classe.

Par exemple, dans l’extrait de code précédent, la méthode setRadius() est une méthode mutatrice. Vous pouvez modifier cette méthode pour ajouter une validation des données. Par exemple, un exemple de validation de données pourrait être de vérifier si le nouveau rayon est un nombre négatif.

Définition de la méthode Accessor en Java

Les méthodes Accessor sont des méthodes qui permettent de lire les champs de classe vers d’autres méthodes ou classes en dehors de la classe. De cette façon, vous pouvez contrôler comment le code client peut accéder aux champs de classe.

Exemples de mutateurs et d’accesseurs

Voyons quelques exemples pour illustrer les méthodes de mutateur et d’accesseur. Setters and getters est une autre façon de se référer aux méthodes d’accesseur et de mutateur.

Ci-dessous, vous trouverez un exemple d’ajout de getters à une classe. La classe est appelée Product, et elle a deux getters : getPrice() et getName(). Ces méthodes permettent à n’importe quel code client d’accéder à la variable de classe, qui est price et name.

import java.math.BigDecimal;public class Product { private BigDecimal price; private String name;// getter or accessor methods public BigDecimal getPrice() { return price; } public String getName() { return name; }}

Et maintenant, je vais ajouter les mutateurs, afin que je puisse accéder et modifier la variable de classe.

import java.math.BigDecimal;public class Product { private BigDecimal price; private String name; public BigDecimal getPrice() { return price; } public String getName() { return name; } // mutator or setter methods public void setPrice(BigDecimal price) { if(price.compareTo(BigDecimal.ZERO)<0 )throw new IllegalArgumentException("Empty product name"); this.price = price; } public void setName(String name) { if(name.isEmpty()) throw new IllegalArgumentException("Empty product name"); this.name = name; }}

Comme vous pouvez le voir ci-dessus, les méthodes de setter setPrice() et setName() incluent également la validation, en s’assurant que les données transmises répondent à certains critères. Par exemple, l’une des exigences est qu’un prix doit toujours être supérieur à zéro. Dans le cas où le paramètre n’est pas valide, le code lèvera une exception. Sinon, il attribuera la nouvelle valeur.

Conventions de nommage pour les mutateurs

En java, les noms de ces méthodes, accesseurs et mutateurs doivent suivre des conventions de nommage spécifiques. Ces règles sont entièrement stabilisées, ce qui les rend indispensables à suivre. Ne pas suivre ces conventions peut créer de la frustration et de la confusion lorsque d’autres personnes lisent votre code.

Commençons par les conventions de nommage pour les mutateurs. La méthode doit être déclarée publique et retourner nulle. De plus, le nom de la méthode doit commencer par le mot set en minuscules. Suivi du nom de la variable de classe avec une majuscule initiale. Par exemple, si notre classe a une variable appelée age, la méthode du mutateur devrait se présenter comme suit:

public void setAge(int age){...}

Conventions de nommage pour les accesseurs

Avec les mutateurs, nous avons vu les accesseurs, qui suivent également une convention de nommage similaire. Les règles sont que la méthode doit être déclarée publique. De plus, le nom de la méthode doit commencer par get, suivi du nom de la variable de classe avec une majuscule initiale. La méthode n’a aucun paramètre et renvoie le type de variable d’instance. Suivant l’exemple précédent, créons une méthode d’accesseur pour la variable age:

public int getAge(){...}

Avantages des mutateurs et des accesseurs

Jusqu’à présent, nous avons vu les méthodes d’accesseur et de mutateur en java avec quelques exemples. Et familiarisez-vous avec les conventions de nommage que vous devez suivre lors de la déclaration de ces méthodes. Cependant, en quoi ces méthodes sont-elles utiles? Le principal avantage est l’encapsulation. Cela signifie essentiellement qu’en créant ces méthodes, vous cachez les détails internes de votre classe aux autres composants. Les autres composants ne peuvent communiquer que via l’API.

Par conséquent, les classes sont découplées; ils ne dépendent pas de chacun, vous permettant de développer de manière isolée, ce qui conduit à des développements plus rapides puisque les membres de l’équipe peuvent créer différentes classes et composants en parallèle. En plus de faciliter la maintenance, car les composants peuvent être modifiés, avec un faible impact sur les autres composants dépendants.

Conclusion

Pour résumer, dans cet article, nous avons vu que les méthodes de mutateur et les méthodes d’accesseurs en java sont des méthodes qui nous permettent de lire et d’écrire des variables de classe. Leur objectif principal est de nous aider à concevoir des classes bien encapsulées et découplées les unes des autres.

J’espère que vous trouverez l’article utile, et je vous remercie beaucoup d’avoir lu et soutenu ce blog! Bon codage!