2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
L'encapsulation est l'une des trois fonctionnalités de base de la programmation orientée objet (POO) (encapsulation, héritage, polymorphisme). Il s'agit de combiner des données (propriétés) et des méthodes (fonctions) pour exploiter ces données dans une unité (classe) indépendante, en masquant autant que possible les détails internes de l'objet et en exposant uniquement l'interface au monde extérieur. Le but est de protéger les données de l'objet, d'empêcher le code externe d'accéder directement aux structures de données internes de l'objet, de réduire les erreurs et de simplifier la complexité.
Utiliser la classe : Lors de la définition d'une classe, définissez les données membres (propriétés) comme privées ou protégées, et définissez les méthodes d'exploitation de ces données comme publiques. De cette manière, le code externe ne peut pas accéder directement aux membres privés de la classe, mais ne peut y accéder qu'indirectement via des méthodes publiques.
modificateur d'accès:
public
: Accessible par tout code externe.protected
: Accessible uniquement dans la classe elle-même et les classes dérivées (sous-classes).private
: Accessible uniquement au sein de la classe elle-même, pas dans les classes dérivées.Constructeur et destructeur : Initialisez l'objet via le constructeur et nettoyez les ressources occupées par l'objet via le destructeur. Ils font également partie de l'encapsulation car ils contrôlent le cycle de vie de l'objet.
Vous trouverez ci-dessous un exemple simple de wrapper C++ montrant unRectangle
Implémentation de la classe (rectangulaire).
- #include <iostream>
-
- class Rectangle {
- private:
- double width; // 矩形的宽
- double height; // 矩形的高
-
- public:
- // 构造函数
- Rectangle(double w, double h) : width(w), height(h) {}
-
- // 设置宽度
- void setWidth(double w) {
- width = w;
- }
-
- // 获取宽度
- double getWidth() const {
- return width;
- }
-
- // 设置高度
- void setHeight(double h) {
- height = h;
- }
-
- // 获取高度
- double getHeight() const {
- return height;
- }
-
- // 计算面积
- double getArea() const {
- return width * height;
- }
- };
-
- int main() {
- Rectangle rect(5.0, 10.0);
- std::cout << "Rectangle area: " << rect.getArea() << std::endl;
- rect.setWidth(7.0);
- std::cout << "New Rectangle area: " << rect.getArea() << std::endl;
- return 0;
- }
Dans cet exemple,Rectangle
généralwidth
etheight
Les propriétés sont rendues privées et le code externe ne peut pas y accéder directement.Au lieu de cela, nous utilisons des méthodes publiques telles quesetWidth
、getHeight
etgetArea
) pour accéder et modifier ces propriétés privées. Cette méthode implémente l'encapsulation des données et fournit une interface claire pour une utilisation externe.