Encapsulation dans Java

Qu’est-ce que l’encapsulation dans Java?

Encapsulation dans Java est un mécanisme permettant de regrouper les variables (données) et les méthodes (code) en une seule unité. C'est le processus de masquage 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 meilleure pour les tests unitaires.

Cliquez sur ici. si la vidéo n'est pas accessible

Apprenez l'encapsulation dans Java avec exemple

Pour comprendre en détail ce qu'est l'encapsulation, considérez la classe de compte bancaire suivante avec les méthodes de dépôt et d'affichage du 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 
        } else
            account_balance = account_balance + a;
    }
}

Supposons qu'un pirate informatique ait réussi à accéder au code de votre compte bancaire. Il essaie maintenant de déposer le montant -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.

Encapsulation dans Java

Maintenant, la question est – Est-ce possible? Examinons cela de plus près. En général, une variable dans une classe est définie comme « privée », comme indiqué ci-dessous. Elle n’est accessible qu’avec les méthodes définies dans la classe. Aucune autre classe ou objet ne peut y accéder.

Encapsulation dans Java

Si un membre de données est privé, cela signifie qu'il n'est accessible qu'au sein de 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. Ainsi, dans notre cas, le pirate ne peut pas déposer le montant -100 sur votre compte.

Encapsulation dans Java

Approche 2:La première approche du pirate n'a pas permis de déposer le montant. Ensuite, il essaie de déposer un montant de -100 en utilisant la méthode « dépôt ».

Encapsulation dans Java

Mais l’implémentation de la méthode vérifie les valeurs négatives. La deuxième approche échoue donc également.

Encapsulation dans Java

Ainsi, vous n’exposez jamais vos données à un tiers. Ce qui sécurise votre application.

Encapsulation dans Java

L'ensemble du code peut être considéré comme une capsule, et vous ne pouvez communiquer qu'à travers les messages. D'où le nom d'encapsulation.

Données cachées dans Java

Données cachées dans Java cache les variables d'une classe aux autres classes. On ne peut y accéder que par la méthode de leur classe actuelle. Il cache les détails d'implémentation aux utilisateurs. Mais plus que le masquage de données, il est destiné à une meilleure gestion ou au regroupement de données associées. Pour obtenir un degré d'encapsulation moindre dans 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 les autres.

Getter et Setter dans Java

Getter et Setter dans 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 visualiser 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 accesseurs et mutateurs.

Le code suivant est un exemple de méthodes getter et setter :

class Account{ 
private int account_number;
private int account_balance; 
    // getter method
	public int getBalance() {
        return this.account_balance;
    }
    // setter method
	public void setNumber(int num) {
        this.account_number = num;
    }
}

Dans l'exemple ci-dessus, la méthode getBalance() est une méthode getter qui lit la valeur de la variable account_balance et la méthode setNumber() est une 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 Abstraction. Étudions-

  • L'encapsulation concerne davantage le « Comment » obtenir une fonctionnalité
  • L'abstraction concerne davantage « ce » qu'une classe peut faire.

Un exemple simple pour comprendre cette différence est un téléphone mobile. Où la logique complexe du circuit imprimé est encapsulée dans un écran tactile et l'interface est fournie pour l'extraire.

Avantages de l'encapsulation dans Java

  • L'encapsulation lie les données avec ses fonctionnalités associées. Ici, fonctionnalités signifient « méthodes » et données signifient « variables ».
  • Nous gardons donc les variables et les méthodes au même endroit. Cet endroit est « classe ». La classe est la base de l'encapsulation.
  • et Java Encapsulation, vous pouvez masquer (restreindre l'accès) aux données membres critiques de 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 n'est accessible qu'au sein de la même classe. Aucune classe extérieure ne peut accéder au membre de données (variable) d'une autre classe.
  • Cependant, si vous devez accéder à ces variables, vous devez utiliser publics « getter » et « setter » méthodes.