12.6 Méthodes d'encapsulation et d'accès (getters et setters)

L'encapsulation est l'un des quatre piliers fondamentaux de la programmation orientée objet (POO), avec l'héritage, le polymorphisme et l'abstraction. L'encapsulation est la pratique consistant à garder les champs (variables d'instance) d'une classe privés et à y fournir un accès via des méthodes publiques. Ceci est fait pour garder le contrôle sur les valeurs définies et obtenues, et pour protéger l'intégrité des données détenues par la classe.

Les méthodes accesseurs, connues sous le nom de getters et setters, constituent le moyen standard d'implémentation de l'encapsulation en Java. Ce sont des méthodes publiques qui servent à obtenir (get) et à définir (définir) la valeur des champs privés d'une classe.

Conventions de dénomination pour les getters et les setters

En Java, il existe une convention de dénomination bien établie pour les getters et les setters qui permet de garder le code lisible, cohérent et accessible aux autres outils et frameworks qui s'appuient sur ces conventions.

Pour un champ appelé name, par exemple, le getter serait nommé getName() et le setter serait nommé setName() . Cette convention s'applique à tous les champs, avec quelques règles spécifiques pour les champs booléens, où le getter commence souvent par is au lieu de get, comme isActive( ) dans un champ appelé actif.

Voici les règles générales pour nommer les getters et les setters :

  • Getters : La méthode commence par le mot get suivi du nom du champ avec la première lettre en majuscule. Si le champ est de type booléen, vous pouvez également utiliser is au lieu de get.
  • Setters : La méthode commence par le mot set suivi du nom du champ avec la première lettre en majuscule.

Ces méthodes doivent être marquées comme publiques afin qu'elles soient accessibles depuis l'extérieur de la classe. De plus, la méthode setter renvoie généralement void et accepte un paramètre du même type que le champ qu'elle définit, tandis que le getter renvoie une valeur du même type que le champ.

Exemple d'implémentation des getters et setters

personne de classe publique { nom de chaîne privé ; âge int privé ; actif booléen privé ; // Getter pour le champ nom chaîne publique getName() { renvoyer le nom ; } // Setter pour le champ nom public void setName (nom de la chaîne) { this.name = nom ; } // Getter pour le champ âge public int getAge() { âge de retour; } // Setter pour le champ age public void setAge(int âge) { this.age = âge; } // Getter pour le champ actif (notez l'utilisation de 'is' au lieu de 'get') public booléen isActive() { retour actif ; } // Setter pour le champ actif public void setActive (booléen actif) { this.active = actif ; } }

Pourquoi utiliser des getters et des setters ?

Bien qu'il puisse sembler plus simple d'accéder directement aux champs, l'utilisation des getters et des setters présente plusieurs avantages :

  • Contrôle d'accès : vous pouvez contrôler si un champ est en lecture seule ou en écriture seule, ou s'il doit suivre certaines règles de validation une fois défini.
  • Masquage de l'implémentation : la classe peut modifier la façon dont les données sont stockées en interne sans affecter les classes qui les utilisent.
  • Flexibilité : vous pouvez ajouter une logique supplémentaire aux méthodes d'accès, comme notifier d'autres objets des modifications apportées à la valeur, effectuer des validations ou même différer le calcul de la valeur jusqu'à ce qu'elle soit réellement nécessaire (paresse chargement ).
  • Compatibilité des frameworks : de nombreux frameworks Java, tels que Spring et Hibernate, s'appuient sur des getters et des setters pour fonctionner correctement.

Il est important de noter que bien que les getters et les setters soient une pratique courante, ils ne sont pas obligatoires. Dans certains cas, où la classe est très simple et ne nécessite pas de contrôle supplémentaire sur ses champs, il peut être acceptable d'exposer les champs directement. Cependant, cela doit être fait avec prudence et en comprenant les conséquences sur la maintenabilité et la flexibilité du code.

En résumé, les getters et les setters constituent un élément crucial de l'encapsulation en Java. Ils fournissent une interface contrôlée pour accéder et modifier les champs d'une classe tout en conservant l'intégrité et la flexibilité du code. Suivre les conventions de dénomination de ces méthodes est essentiel pour maintenir la cohérence et garantir une interaction appropriée avec d'autres parties de l'écosystème Java.

Répondez maintenant à l’exercice sur le contenu :

Laquelle des affirmations suivantes concernant les méthodes d’encapsulation et d’accès en Java est correcte ?

Tu as raison! Félicitations, passez maintenant à la page suivante

Vous avez raté! Essayer à nouveau.

Image de l'article Méthodes d'encapsulation et d'accès (getters et setters) : Utilisation de getters et de setters pour le contrôle d'accès

Page suivante de lebook gratuit :

81Méthodes d'encapsulation et d'accès (getters et setters) : Utilisation de getters et de setters pour le contrôle d'accès

0 minutes

Obtenez votre certificat pour ce cours gratuitement ! en téléchargeant lapplication Cursa et en lisant lebook qui sy trouve. Disponible sur Google Play ou App Store !

Get it on Google Play Get it on App Store

+ 6,5 millions
d'étudiants

Certificat gratuit et
valide avec QR Code

48 mille exercices
gratuits

Note de 4,8/5 dans les
magasins d'applications

Cours gratuits en
vidéo, audio et texte