Encapsulation de données en C++
Tous les programmes C++ sont composés des deux éléments fondamentaux suivants −
-
Déclarations de programme (code) − C'est la partie d'un programme qui exécute des actions et elles sont appelées fonctions.
-
Données du programme − Les données sont les informations du programme qui sont affectées par les fonctions du programme.
L'encapsulation est un concept de programmation orientée objet qui relie les données et les fonctions qui manipulent les données, et qui les protège des interférences extérieures et des abus. L'encapsulation des données a conduit au concept important de la POO de masquage des données .
Encapsulation des données est un mécanisme de regroupement des données, des fonctions qui les utilisent et de l'abstraction des données est un mécanisme permettant d'exposer uniquement les interfaces et de masquer les détails d'implémentation à l'utilisateur.
C++ prend en charge les propriétés d'encapsulation et de masquage des données grâce à la création de types définis par l'utilisateur, appelés classes . Nous avons déjà étudié qu'une classe peut contenir private, protected et public membres. Par défaut, tous les éléments définis dans une classe sont privés. Par exemple −
class Box { public: double getVolume(void) { return length * breadth * height; } private: double length; // Length of a box double breadth; // Breadth of a box double height; // Height of a box };
Les variables longueur, largeur et hauteur sont privées . Cela signifie qu'ils ne sont accessibles qu'aux autres membres de la classe Box, et à aucune autre partie de votre programme. C'est une façon d'obtenir l'encapsulation.
Pour rendre des parties d'une classe publiques (c'est-à-dire accessibles à d'autres parties de votre programme), vous devez les déclarer après le public mot-clé. Toutes les variables ou fonctions définies après le spécificateur public sont accessibles par toutes les autres fonctions de votre programme.
Faire d'une classe l'amie d'une autre expose les détails d'implémentation et réduit l'encapsulation. L'idéal est de garder autant de détails de chaque classe cachés de toutes les autres classes que possible.
Exemple d'encapsulation de données
Tout programme C++ dans lequel vous implémentez une classe avec des membres publics et privés est un exemple d'encapsulation et d'abstraction de données. Prenons l'exemple suivant −
Démo en direct#include <iostream> using namespace std; class Adder { public: // constructor Adder(int i = 0) { total = i; } // interface to outside world void addNum(int number) { total += number; } // interface to outside world int getTotal() { return total; }; private: // hidden data from outside world int total; }; int main() { Adder a; a.addNum(10); a.addNum(20); a.addNum(30); cout << "Total " << a.getTotal() <<endl; return 0; }
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant −
Total 60
La classe ci-dessus additionne des nombres et renvoie la somme. Les membres publics addNum et getTotal sont les interfaces avec le monde extérieur et un utilisateur doit les connaître pour utiliser la classe. Le membre privé total est quelque chose qui est caché au monde extérieur, mais qui est nécessaire au bon fonctionnement de la classe.
Concevoir une stratégie
La plupart d'entre nous ont appris à rendre les membres de classe privés par défaut à moins que nous ayons vraiment besoin de les exposer. C'est juste une bonne encapsulation .
Ceci s'applique le plus souvent aux membres de données, mais s'applique également à tous les membres, y compris les fonctions virtuelles.
Langue C