Encapsulation de données C++
Tous les programmes C++ comportent les deux éléments de base suivants :
Instructions du programme (code) : C'est la partie du programme qui exécute le action , elles sont appelées fonctions.
Données du programme : Les données sont des informations sur le programme et seront affectées par les fonctions du programme.
L'encapsulation est un concept de programmation orientée objet qui lie les données et les fonctions qui opèrent sur les données, ce qui peut éviter les interférences et les utilisations abusives du monde extérieur, garantissant ainsi la sécurité. L'encapsulation des données conduit à un autre concept POO important, à savoir le masquage des données.
L'encapsulation des données est un mécanisme qui regroupe les données et les fonctions pour exploiter les données. L'abstraction des données est une méthode qui expose uniquement l'interface à l'utilisateur et met le A spécifique. mécanisme par lequel les détails de mise en œuvre sont masqués.
C++ prend en charge l'encapsulation et le masquage de données (publiques, protégées, privées) en créant des classes . Nous savons déjà qu'une classe contient des membres privés, protégés et publics. 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; // 长度 double breadth; // 宽度 double height; // 高度 };
Les variables longueur, largeur et hauteur sont toutes privées. Cela signifie qu'ils ne sont accessibles qu'aux autres membres de la classe Box et non aux autres parties du programme. C'est une façon de réaliser l'encapsulation.
Afin de rendre publics les membres d'une classe (c'est-à-dire accessibles à d'autres parties du programme), ils doivent être déclarés à l'aide du mot-clé public avant ces membres. Toutes les variables ou fonctions définies après un identifiant public sont accessibles par toutes les autres fonctions du programme.
Définir une classe comme classe amie d'une autre classe exposera les détails de l'implémentation, réduisant ainsi l'encapsulation. L’approche idéale consiste à cacher autant que possible les détails d’implémentation de chaque classe de l’extérieur.
Instances d'encapsulation de données
Dans les programmes C++, toute classe avec des membres publics et privés peut être utilisée comme instance d'encapsulation de données et d'abstraction de données. Jetez un œil à l'exemple suivant :
#include <iostream> using namespace std; class Adder{ public: // 构造函数 Adder(int i = 0) { total = i; } // 对外的接口 void addNum(int number) { total += number; } // 对外的接口 int getTotal() { return total; }; private: // 对外隐藏的数据 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 les résultats suivants :
Total 60
La classe ci-dessus ajoute des nombres et renvoie la somme. Les membres publics addNum et getTotal sont des interfaces externes et les utilisateurs doivent les connaître pour pouvoir utiliser la classe. Le membre privé total est caché du monde extérieur et l'utilisateur n'a pas besoin de le savoir, mais il est nécessaire au bon fonctionnement de la classe.
Stratégie de conception
Normalement, nous définirons le statut des membres de la classe sur privé à moins que nous ayons vraiment besoin de les exposer, afin d'assurer une bonne encapsulation.
Cela s'applique généralement aux membres de données, mais cela s'applique également à tous les membres, y compris les fonctions virtuelles.