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.
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.
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.
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 ยป.
Mais lโimplรฉmentation de la mรฉthode vรฉrifie les valeurs nรฉgatives. La deuxiรจme approche รฉchoue donc รฉgalement.
Ainsi, vous nโexposez jamais vos donnรฉes ร un tiers. Ce qui sรฉcurise votre application.
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.






