Latest web development tutorials

C ++ encapsulación de datos

Todos los programas en C ++ tienen dos elementos básicos:

  • sentencias de programa (código): Esta es parte de un programa para llevar a cabo una acción, que se denominan funciones.
  • Programa de datos: Los datos son la información del programa, se verán afectadas las funciones del programa.

La encapsulación es un concepto de programación orientada a objetos en los datos de la función y la manipulación de los datos unidas entre sí, así que para evitar la interferencia externa y el mal uso, garantizando así la seguridad. encapsulación de datos salen de otros importantes conceptos de POO, a saber,ocultación de datos.

la encapsulación de datos es un mecanismo para función de datos y los datos de la manipulación de la abstracción de datosincluido sólo una está expuesta a las interfaces de usuario y los detalles de implementación mecanismo oculto.

Mediante la creación de unaclase de C ++ apoyo encapsulación de datos y ocultar (público, protegido, privado).Ya sabemos que la clase contiene miembros privados (privados), para proteger a los miembros de la (protegida) y los miembros de los miembros públicos (públicos). Por defecto, todos los elementos definidos en la clase son privados. Por ejemplo:

class Box
{
   public:
      double getVolume(void)
      {
         return length * breadth * height;
      }
   private:
      double length;      // 长度
      double breadth;     // 宽度
      double height;      // 高度
};

de longitud variable, anchura y altura son privadas (privado). Esto significa que sólo se puede acceder por otros miembros de la clase Box, no se puede acceder a otras partes del programa. Esta es una manera de lograr paquete.

Con el fin de convertirse en un miembro de la clase pública (es decir, otras partes del programa pueden acceder a), debe utilizar la palabra clavepública antes de que estos miembros se declaran.Todos los identificadores se definen en el público detrás de la variable o función puede ser utilizada por todas las otras funciones para acceder al programa.

La clase se define como un amigo de otra clase, se expondría a los detalles de implementación, reduciendo así la encapsulación. Lo ideal sería que, en lo posible los detalles de implementación ocultar exteriores de cada clase.

Ejemplos de paquetes de datos

programa en C ++, cualquier clase con miembros de los datos públicos y privados se puede utilizar como ejemplos de encapsulación y abstracción de datos. Considere los siguientes ejemplos:

#include <iostream>
using namespace std;

class Adder{
   public:
      // 构造函数
      Adder(int i = 0)
      {
        total = i;
      }
      // 对外的接口
      void addNum(int number)
      {
          total += number;
      }
      // 对外的接口
      int getTotal()
      {
          return total;
      };
   private:
      // 对外隐藏的数据
      int total;
};
int main( )
{
   Adder a;
   
   a.addNum(10);
   a.addNum(20);
   a.addNum(30);

   cout << "Total " << a.getTotal() <<endl;
   return 0;
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

Total 60

La clase por encima de los números y devuelve la suma. PúblicaaddNum miembros y es getTotalinterfaz externa, los usuarios necesitan saber con el fin de utilizar su clase. miembros privados externatotal se oculta, los usuarios no tienen que entenderlo, pero es un trabajo de clase normal requerido.

Estrategia de diseño

En circunstancias normales, vamos a configurar un estado miembro de la clase privada (privada), a menos que realmente necesitan ser expuestos, a fin de garantizaruna buena encapsulación.

Esto se aplica generalmente a los miembros de datos, pero es igualmente aplicable a todos los miembros, incluyendo las funciones virtuales.