Compartir tecnología

[C]Paquete

2024-07-12

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

1. Definición de embalaje

La encapsulación es una de las tres características básicas de la programación orientada a objetos (OOP) (encapsulación, herencia, polimorfismo). Se refiere a combinar datos (propiedades) y métodos (funciones) para operar estos datos en una unidad (clase) independiente, ocultar los detalles internos del objeto tanto como sea posible y solo exponer la interfaz al mundo exterior. El propósito de esto es proteger los datos del objeto, evitar que el código externo acceda directamente a las estructuras de datos internas del objeto, reducir los errores y simplificar la complejidad.

2. El propósito del embalaje

  1. ocultación de datos: Protege los datos del objeto del acceso externo directo y evita que los datos se modifiquen ilegalmente.
  2. Interfaz clara: Al exponer interfaces (métodos) limitadas, el código externo solo puede interactuar con el objeto a través de estas interfaces, aclarando así el comportamiento del objeto.
  3. Modular: Encapsule datos y operaciones relacionados juntos para mejorar la modularidad y la reutilización del código.

3. Métodos para implementar la encapsulación en C++

  1. Usando clase : Al definir una clase, establezca los miembros de datos (propiedades) como privados o protegidos y establezca los métodos para operar estos datos como públicos. De esta manera, el código externo no puede acceder directamente a los miembros privados de la clase, solo puede acceder a ellos indirectamente a través de métodos públicos.

  2. modificador de acceso

    • public: Accesible mediante cualquier código externo.
    • protected: Solo se puede acceder en la propia clase y en las clases derivadas (subclases).
    • private: Solo se puede acceder a él dentro de la propia clase, no a las clases derivadas.
  3. constructor y destructor : Inicializa el objeto a través del constructor y limpia los recursos ocupados por el objeto a través del destructor. También forman parte de la encapsulación porque controlan el ciclo de vida del objeto.

4. Ejemplo

A continuación se muestra un ejemplo simple de contenedor de C++ que muestra unRectangleImplementación de la clase (rectangular).

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

En este ejemplo,Rectanglegeneralwidthyheight Las propiedades se vuelven privadas y el código externo no puede acceder a ellas directamente.En su lugar, utilizamos métodos públicos comosetWidthgetHeightygetArea ) para acceder y modificar estas propiedades privadas. Este método implementa la encapsulación de datos y proporciona una interfaz clara para uso externo.