Technologieaustausch

[C]Paket

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Definition der Verpackung

Die Kapselung ist eines der drei Grundmerkmale der objektorientierten Programmierung (OOP) (Kapselung, Vererbung, Polymorphismus). Es bezieht sich auf die Kombination von Daten (Eigenschaften) und Methoden (Funktionen) zur Verarbeitung dieser Daten in einer unabhängigen Einheit (Klasse), wobei die internen Details des Objekts so weit wie möglich verborgen werden und nur die Schnittstelle der Außenwelt zugänglich gemacht wird. Der Zweck besteht darin, die Daten des Objekts zu schützen, zu verhindern, dass externer Code direkt auf die internen Datenstrukturen des Objekts zugreift, Fehler zu reduzieren und die Komplexität zu vereinfachen.

2. Der Zweck der Verpackung

  1. Daten verstecken: Schützen Sie die Daten des Objekts vor direktem externen Zugriff und verhindern Sie, dass Daten illegal geändert werden.
  2. Klare Oberfläche: Durch die Offenlegung begrenzter Schnittstellen (Methoden) kann externer Code nur über diese Schnittstellen mit dem Objekt interagieren und so das Verhalten des Objekts verdeutlichen.
  3. Modular: Kapseln Sie verwandte Daten und Vorgänge zusammen, um die Modularität und Wiederverwendbarkeit des Codes zu verbessern.

3. Methoden zur Implementierung der Kapselung in C++

  1. Klasse verwenden : Legen Sie beim Definieren einer Klasse die Datenelemente (Eigenschaften) als privat oder geschützt fest und legen Sie die Methoden zum Betreiben dieser Daten als öffentlich fest. Auf diese Weise kann externer Code nicht direkt auf die privaten Mitglieder der Klasse zugreifen, sondern nur indirekt über öffentliche Methoden.

  2. Zugriffsmodifikator

    • public: Zugänglich für jeden externen Code.
    • protected: Der Zugriff ist nur in der Klasse selbst und abgeleiteten Klassen (Unterklassen) möglich.
    • private: Der Zugriff ist nur innerhalb der Klasse selbst möglich, nicht in abgeleiteten Klassen.
  3. Konstruktor und Destruktor : Initialisieren Sie das Objekt über den Konstruktor und bereinigen Sie die vom Objekt belegten Ressourcen über den Destruktor. Sie sind auch Teil der Kapselung, da sie den Lebenszyklus des Objekts steuern.

4. Beispiel

Unten finden Sie ein einfaches C++-Wrapper-Beispiel, das a zeigtRectangleImplementierung der (rechteckigen) Klasse.

  1. #include <iostream>
  2. class Rectangle {
  3. private:
  4. double width; // 矩形的宽
  5. double height; // 矩形的高
  6. public:
  7. // 构造函数
  8. Rectangle(double w, double h) : width(w), height(h) {}
  9. // 设置宽度
  10. void setWidth(double w) {
  11. width = w;
  12. }
  13. // 获取宽度
  14. double getWidth() const {
  15. return width;
  16. }
  17. // 设置高度
  18. void setHeight(double h) {
  19. height = h;
  20. }
  21. // 获取高度
  22. double getHeight() const {
  23. return height;
  24. }
  25. // 计算面积
  26. double getArea() const {
  27. return width * height;
  28. }
  29. };
  30. int main() {
  31. Rectangle rect(5.0, 10.0);
  32. std::cout << "Rectangle area: " << rect.getArea() << std::endl;
  33. rect.setWidth(7.0);
  34. std::cout << "New Rectangle area: " << rect.getArea() << std::endl;
  35. return 0;
  36. }

In diesem Beispiel,RectangleallgemeinwidthUndheight Eigenschaften werden privat gemacht und externer Code kann nicht direkt darauf zugreifen.Stattdessen verwenden wir öffentliche Methoden wiesetWidthgetHeightUndgetArea ), um auf diese privaten Eigenschaften zuzugreifen und sie zu ändern. Diese Methode implementiert die Datenkapselung und bietet eine klare Schnittstelle für die externe Verwendung.