Compartilhamento de tecnologia

[C]Pacote

2024-07-12

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

1. Definição de embalagem

O encapsulamento é um dos três recursos básicos da programação orientada a objetos (OOP) (encapsulamento, herança, polimorfismo). Refere-se à combinação de dados (propriedades) e métodos (funções) para operar esses dados em uma unidade independente (classe), ocultando ao máximo os detalhes internos do objeto e expondo apenas a interface ao mundo externo. O objetivo disso é proteger os dados do objeto, evitar que códigos externos acessem diretamente as estruturas de dados internas do objeto, reduzir erros e simplificar a complexidade.

2. A finalidade da embalagem

  1. ocultação de dados: Proteja os dados do objeto contra acesso externo direto e evite que os dados sejam modificados ilegalmente.
  2. Interface clara: Ao expor interfaces (métodos) limitadas, o código externo só pode interagir com o objeto por meio dessas interfaces, esclarecendo assim o comportamento do objeto.
  3. Modular: encapsula dados e operações relacionadas para melhorar a modularidade e a reutilização do código.

3. Métodos para implementar encapsulamento em C++

  1. Usando classe : ao definir uma classe, defina os membros dos dados (propriedades) como privados ou protegidos e defina os métodos para operar esses dados como públicos. Dessa forma, o código externo não pode acessar diretamente os membros privados da classe, mas só pode acessá-los indiretamente por meio de métodos públicos.

  2. modificador de acesso

    • public: Acessível por qualquer código externo.
    • protected: Só pode ser acessado na própria classe e nas classes derivadas (subclasses).
    • private: só pode ser acessado dentro da própria classe, não em classes derivadas.
  3. Construtor e destruidor : Inicialize o objeto por meio do construtor e limpe os recursos ocupados pelo objeto por meio do destruidor. Eles também fazem parte do encapsulamento porque controlam o ciclo de vida do objeto.

4. Exemplo

Abaixo está um exemplo simples de wrapper C++ mostrando umRectangleImplementação da classe (retangular).

  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. }

Neste exemplo,Rectangleem geralwidtheheight As propriedades tornam-se privadas e o código externo não pode acessá-las diretamente.Em vez disso, usamos métodos públicos comosetWidthgetHeightegetArea ) para acessar e modificar essas propriedades privadas. Este método implementa encapsulamento de dados e fornece uma interface clara para uso externo.