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 ร  nouveau 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.
  • Avec le 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.

Rรฉsumez cet article avec :