Mini-JS k_encapsulation
L’encapsulation
L’encapsulation est l’un des grands principes de la programmation orientée objet. Elle consiste à protéger l’intégrité d’un objet en rendant certaines de ses données inaccessibles directement depuis l’extérieur. L’idée est simple : un objet doit exposer uniquement ce qui est nécessaire à son utilisation, tout en dissimulant les détails internes qui ne concernent pas le reste du programme.
En JavaScript, les objets et les classes permettent de mettre
en œuvre ce principe. Les propriétés et les méthodes que l’on
définit dans une classe sont, par défaut, accessibles depuis
l’extérieur. Toutefois, depuis les versions récentes du langage,
il est possible de créer des champs véritablement privés en les
déclarant avec le préfixe #.
Prenons un exemple avec une classe qui gère un compte bancaire :
class BankAccount {
#balance;
constructor(initialBalance) {
this.#balance = initialBalance;
}
deposit(amount) {
this.#balance += amount;
}
withdraw(amount) {
if (amount <= this.#balance) {
this.#balance -= amount;
} else {
console.log("Fonds insuffisants");
}
}
getBalance() {
return this.#balance;
}
}
let account = new BankAccount(100);
account.deposit(50);
console.log(account.getBalance()); // 150Ici, la propriété #balance est privée. Elle ne
peut pas être consultée ou modifiée directement depuis l’extérieur
de la classe. On est obligé de passer par les méthodes
deposit, withdraw ou
getBalance. Cela garantit que l’état du compte reste
cohérent et qu’il ne peut pas être altéré de manière
imprévisible.
Avant l’introduction de cette syntaxe, les développeurs avaient
recours à des conventions (comme préfixer une propriété par
_) ou à des fermetures (closures) pour
simuler un accès privé. Ces techniques restent valides, mais
l’utilisation des champs privés rend aujourd’hui l’encapsulation
plus claire et plus naturelle.
L’encapsulation permet donc de séparer ce qui relève de l’interface publique d’un objet (ce que les autres parties du programme sont censées utiliser) et ce qui relève de son implémentation interne (qui doit rester dissimulée). Cette séparation rend le code plus sûr, plus robuste et plus facile à maintenir.
À retenir
L’encapsulation regroupe les données et les comportements dans
une même entité tout en protégeant l’accès à certains éléments
internes. En JavaScript, elle s’exprime aujourd’hui à travers les
champs privés (#propriété) et les méthodes publiques.
Ce principe permet de contrôler la manière dont un objet est
utilisé et d’éviter des modifications non souhaitées de son état
interne.