Condivisione della tecnologia

[C]Pacchetto

2024-07-12

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

1. Definizione di imballaggio

L'incapsulamento è una delle tre caratteristiche fondamentali della programmazione orientata agli oggetti (OOP) (incapsulamento, ereditarietà, polimorfismo). Si riferisce alla combinazione di dati (proprietà) e metodi (funzioni) per gestire questi dati in un'unità indipendente (classe), nascondendo il più possibile i dettagli interni dell'oggetto ed esponendo solo l'interfaccia al mondo esterno. Lo scopo è proteggere i dati dell'oggetto, impedire al codice esterno di accedere direttamente alle strutture dati interne dell'oggetto, ridurre gli errori e semplificare la complessità.

2. Lo scopo dell'imballaggio

  1. dati nascosti: protegge i dati dell'oggetto dall'accesso esterno diretto e impedisce che i dati vengano modificati illegalmente.
  2. Interfaccia chiara: Esponendo interfacce (metodi) limitate, il codice esterno può interagire con l'oggetto solo attraverso queste interfacce, chiarendo così il comportamento dell'oggetto.
  3. Modulare: incapsula insieme dati e operazioni correlati per migliorare la modularità e la riusabilità del codice.

3. Metodi per implementare l'incapsulamento in C++

  1. Utilizzando la classe : quando si definisce una classe, impostare i membri dati (proprietà) come privati ​​o protetti e impostare i metodi per gestire questi dati come pubblici. In questo modo il codice esterno non può accedere direttamente ai membri privati ​​della classe, ma può accedervi solo indirettamente tramite metodi pubblici.

  2. modificatore di accesso

    • public: Accessibile da qualsiasi codice esterno.
    • protected: è possibile accedervi solo nella classe stessa e nelle classi derivate (sottoclassi).
    • private: è possibile accedervi solo all'interno della classe stessa, non nelle classi derivate.
  3. Costruttore e distruttore : Inizializza l'oggetto tramite il costruttore e ripulisci le risorse occupate dall'oggetto tramite il distruttore. Fanno anche parte dell'incapsulamento perché controllano il ciclo di vita dell'oggetto.

4. Esempio

Di seguito è riportato un semplice esempio di wrapper C++ che mostra aRectangleImplementazione della classe (rettangolare).

  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 questo esempio,RectanglegeneralewidthEheight Le proprietà vengono rese private e il codice esterno non può accedervi direttamente.Utilizziamo invece metodi pubblici comesetWidthgetHeightEgetArea ) per accedere e modificare queste proprietà private. Questo metodo implementa l'incapsulamento dei dati e fornisce un'interfaccia chiara per uso esterno.