L'encapsulation est un principe de conception orientée objet qui implique la dissimulation de la structure interne d'un objet et la fourniture uniquement de l'interface publique nécessaire.
Historique de la question : Depuis l'apparition de la POO, l'une des tâches clés a été de protéger l'état interne des objets contre les modifications incorrectes de l'extérieur et d'assurer un contrôle strict sur la logique.
Problème : Sans encapsulation, toutes les données et méthodes deviennent accessibles au code externe, ce qui entraîne une perte de contrôle sur l'état des objets et l'apparition d'erreurs difficiles à détecter.
Solution :
En C++, trois spécificateurs d'accès sont utilisés : private, protected, public. private interdit l'accès aux membres en dehors de la classe, protected donne accès uniquement aux successeurs, public rend les membres partie de l'interface.
Exemple de code :
class Stack { private: int *data; int top; public: Stack(); void push(int val); int pop(); };
Caractéristiques clés :
Est-il vrai que les membres private ne peuvent être modifiés de quelque manière que ce soit en dehors de la classe ?
Faux. On peut utiliser des fonctions friend, des classes friend ou des techniques non sécurisées (par exemple, via un casting de pointeurs ou un comportement indéfini).
Dans quel ordre s'appliquent les spécificateurs lors de l'héritage (private, protected, public) ?
Si l'héritage est déclaré comme private, tous les membres public et protected de la classe de base deviennent des membres private de la classe dérivée.
Quelles sont les différences entre l'héritage protected et private ?
En héritage protected, tous les membres public et protected de la classe de base deviennent des membres protected de la classe dérivée ; en héritage private, tous deviennent private.
Tous les membres de la classe sont déclarés public, tout code externe peut modifier la structure et violer les invariants de l'objet.
Avantages :
Inconvénients :
Seules les méthodes publiques nécessaires sont utilisées, les autres données sont fermées (private), l'état est protégé.
Avantages :
Inconvénients :