📦
developpement

Encapsulation

Principe de masquer les détails internes d'un objet et de n'exposer qu'une interface publique controlee.

Qu'est-ce que l'encapsulation ?

L'encapsulation est un principe fondamental de la programmation orientee objet qui consiste à regrouper les données (attributs) et les traitements (méthodes) au sein d'une même entité (classe) tout en controlant l'accès de l'extérieur. L'objectif est de protéger l'état interne d'un objet contre les modifications non controlees et de définir une interface publique claire.

Modificateurs d'accès

Les langages orientes objet fournissent des modificateurs d'accès pour contrôler la visibilité. public : accessible depuis n'importe ou. private : accessible uniquement depuis la classe elle-meme. protected : accessible depuis la classe et ses sous-classes. En Java et C#, un quatrième niveau (package-private/internal) limite l'accès au même package ou assembly. En Python, la convention utilise le prefixe underscore (_attribut pour protege, __attribut pour prive avec name mangling). En TypeScript, les modificateurs private et protected sont verifies à la compilation mais pas à l'exécution.

Getters et setters

Les accesseurs (getters) et mutateurs (setters) sont des méthodes publiques qui controlent l'accès aux attributs prives. Ils permettent d'ajouter de la validation (vérifier qu'un age est positif), de la logique derivee (calculer un champ à la volee), ou du logging sans modifier l'interface publique. En Java, on utilise des méthodes explicites (getName(), setName()). En Python, le décorateur @property offre une syntaxe transparente. En C#, les propriétés avec get/set sont une fonctionnalité native du langage.

Avantages de l'encapsulation

L'encapsulation offre plusieurs avantages majeurs : la protection des données (impossible de mettre l'objet dans un état invalide), le decouplage (les clients dépendent de l'interface, pas de l'implémentation), la maintenabilité (on peut modifier l'implémentation interne sans casser le code client), et la testabilite (on teste via l'interface publique). L'encapsulation est la base du principe de moindre connaissance (loi de Demeter) : un objet ne devrait interagir qu'avec ses collaborateurs directs.

Encapsulation au-delà des classes

L'encapsulation ne se limite pas aux classes. Les modules encapsulent des groupes de fonctions et de types (les exports publics forment l'interface). Les microservices encapsulent un domaine métier derrière une API. Les fonctions encapsulent un algorithme. En JavaScript, les closures offrent une encapsulation naturelle (les variables capturees sont inaccessibles de l'extérieur). Le principe d'encapsulation est universel : cacher les détails, exposer le nécessaire.

Besoin d'aide technique ?

Decrivez votre projet pour des conseils personnalises par nos experts.

Recevoir des conseils

Questions fréquentes

L'encapsulation est-elle possible sans POO ?
Oui. En JavaScript, les closures encapsulent des variables. En C, les fichiers .c avec des fonctions static sont prives au module. Les modules ES6 (import/export) controlent la visibilite. L'encapsulation est un principe de conception, pas une fonctionnalite exclusive de la POO.
Faut-il toujours utiliser des getters et setters ?
Non. Les getters/setters triviaux (qui ne font que lire/ecrire) n'ajoutent pas de valeur en Python ou JavaScript. Ils sont utiles en Java (convention JavaBeans) et quand vous avez besoin de validation, de logique derivee ou de notification de changement. Privilegiez l'immutabilite quand c'est possible.

Pages liées

Chaque semaine, le meilleur de la tech française

Tendances, salaires, outils et opportunités — directement dans votre boîte mail.

Gratuit. Desabonnement en un clic. Pas de spam.