Qu'est-ce que l'encapsulation en Java?
L'encapsulation en Java est un mécanisme pour regrouper les variables (données) et les méthodes (code) en une seule unité. C'est le processus de masquage des détails des informations et de protection des données et du comportement de l'objet. C'est l'un des quatre concepts importants de la POO. La classe encapsulate est facile à tester, elle est donc également préférable pour les tests unitaires.
Dans ce didacticiel, vous apprendrez-
- Qu'est-ce que l'encapsulation en Java?
- Apprenez l'encapsulation avec un exemple
- Masquage des données en Java
- Méthodes Getter et Setter en Java
- Abstraction vs encapsulation
- Avantages de l'encapsulation en Java
Cliquez ici si la vidéo n'est pas accessible
Apprenez l'encapsulation avec un exemple
Pour comprendre en détail ce qu'est l'encapsulation, considérez la classe de compte bancaire suivante avec dépôt et affichez les méthodes de solde
class Account {private int account_number;private int account_balance;public void show Data() {//code to show data}public void deposit(int a) {if (a < 0) {//show error} elseaccount_balance = account_balance + a;}}
Supposons qu'un pirate parvienne à accéder au code de votre compte bancaire. Maintenant, il essaie de déposer un montant de -100 sur votre compte de deux manières. Voyons sa première méthode ou approche.
Approche 1: Il essaie de déposer un montant invalide (disons -100) sur votre compte bancaire en manipulant le code.
Maintenant, la question est - est-ce possible? Laissez enquêter.
Habituellement, une variable dans une classe est définie comme "privée" comme indiqué ci-dessous. Il n'est accessible qu'avec les méthodes définies dans la classe. Aucune autre classe ou objet ne peut y accéder.
Si un membre de données est privé, cela signifie qu'il n'est accessible que dans la même classe. Aucune classe extérieure ne peut accéder à un membre de données privé ou à une variable d'une autre classe.
Donc, dans notre cas, le pirate ne peut pas déposer un montant de -100 sur votre compte.
Approche 2 : La première approche de Hacker n'a pas réussi à déposer le montant. Ensuite, il essaie de faire un dépôt d'un montant -100 en utilisant la méthode du «dépôt».
Mais l'implémentation de la méthode a un contrôle des valeurs négatives. La deuxième approche échoue donc également.
Ainsi, vous n'exposez jamais vos données à une partie externe. Ce qui rend votre application sécurisée.
Le code entier peut être considéré comme une capsule et vous ne pouvez communiquer que par le biais des messages. D'où le nom d'encapsulation.
Masquage des données en Java
Le masquage des données en Java cache les variables d'une classe aux autres classes. Il n'est accessible que par la méthode de leur classe actuelle. Il masque les détails de mise en œuvre aux utilisateurs. Mais plus que le masquage des données, il est destiné à une meilleure gestion ou au regroupement des données associées.
Pour obtenir un moindre degré d'encapsulation en Java, vous pouvez utiliser des modificateurs tels que "protected" ou "public". Avec l'encapsulation, les développeurs peuvent facilement modifier une partie du code sans affecter l'autre.
Getter et Setter en Java
Getter et Setter en Java sont deux méthodes conventionnelles utilisées pour récupérer et mettre à jour les valeurs d'une variable. Ils sont principalement utilisés pour créer, modifier, supprimer et afficher les valeurs des variables. La méthode setter est utilisée pour mettre à jour les valeurs et la méthode getter est utilisée pour lire ou récupérer les valeurs. Ils sont également connus comme un accesseur et un mutateur.
Le code suivant est un exemple de méthodes getter et setter:
class Account{private int account_number;private int account_balance;// getter methodpublic int getBalance() {return this.account_balance;}// setter methodpublic void setNumber(int num) {this.account_number = num;}}
Dans l'exemple ci-dessus, la méthode getBalance () est la méthode getter qui lit la valeur de la variable account_balance et la méthode setNumber () est la méthode setter qui définit ou met à jour la valeur de la variable account_number.
Abstraction vs encapsulation
L'encapsulation est souvent mal comprise avec l'abstraction. Étudions-
- L'encapsulation concerne davantage «Comment» obtenir une fonctionnalité
- L'abstraction concerne davantage «ce que» une classe peut faire.
Un téléphone mobile est un exemple simple pour comprendre cette différence. Où la logique complexe dans la carte de circuit imprimé est encapsulée dans un écran tactile, et l'interface est fournie pour l'abstraire.
Avantages de l'encapsulation en Java
- L'encapsulation lie les données avec ses fonctionnalités associées. Ici, les fonctionnalités signifient «méthodes» et les données signifient «variables»
- Nous conservons donc les variables et les méthodes au même endroit. Cet endroit est «classe». La classe est la base de l'encapsulation.
- Avec Java Encapsulation, vous pouvez masquer (restreindre l'accès) aux membres de données critiques dans votre code, ce qui améliore la sécurité
- Comme nous l'avons vu précédemment, si un membre de données est déclaré "privé", il ne peut être accédé que dans la même classe. Aucune classe extérieure ne peut accéder aux données membres (variables) d'une autre classe.
- Cependant, si vous avez besoin d'accéder à ces variables, vous devez utiliser les méthodes publiques "getter" et "setter" .