Latest web development tutorials

la abstracción de datos C ++

la abstracción de datos se refiere sólo a proporcionar información crítica para el mundo exterior, y ocultar los detalles de implementación de sus antecedentes, que el rendimiento de sólo la información necesaria sin presentar detalles.

Abstracción de datos es una dependencia de la interfaz de programación de aplicación y tecnología de separación (diseño).

Tomemos ejemplos reales de la vida real, tales como un televisor, se puede encender y apagar, cambiar los canales, ajustar el volumen, la adición de componentes externos (como altavoces, reproductor de vídeo, reproductor de DVD), pero no conocemos su interior detalles de implementación, es decir, que no saben cómo se recibe una señal por cable, cómo convertir la señal y, finalmente, aparece en la pantalla.

Por lo tanto, podemos decir que el televisor para su aplicación interna y las interfaces externas separadas, y no está de conocer su principio interno, directamente a través de su interfaz externa (por ejemplo, el botón de encendido en el control remoto, controlador de volumen de sonido) puede controlar el televisor.

Ahora, vamos a ir al grano, es en términos de programación C ++, C ++ posiblela extracción de datos de clase.Al mundo exterior proporciona un método común para el funcionamiento de un gran número de objetos de datos, que es, de hecho, el mundo exterior no conocían la implementación de la clase interna.

Por ejemplo, el programa puede llamar a la funciónsort (), sin la necesidad de conocer la función de los algoritmos utilizados para clasificar los datos.De hecho, la función subyacente de la realización de la especie debido a la diferente repositorio variar, siempre que la misma interfaz, llamada de función como de costumbre.

En C ++, utilizamos nuestra propiaclase para definir el tipo de datos abstractos (ADT).Puede utilizar la claseostream coutobjeto de datos de salida a la salida estándar, de la siguiente manera:

#include <iostream>
using namespace std;

int main( )
{
   cout << "Hello C++" <<endl;
   return 0;
}

Aquí, usted no entiende cómo el textocout muestra en la pantalla del usuario.Sólo se necesita conocer la interfaz pública que, cout implementación subyacente se puede cambiar libremente.

pestaña de acceso obligatorio Resumen

En C ++, utilizamos la ficha acceso para definir la clase de interfaz abstracta. Una clase puede contener cero o más etiquetas de acceso:

  • Etiqueta define el uso de los miembros del público puedan acceder a todas las partes del programa. Resumen vista de un tipo de datos es pública por sus miembros definidos.
  • El uso de la etiqueta privada define utilizando los miembros de la clase no puede tener acceso al código. parte privada del código utilizando el tipo de detalles de implementación ocultar.

etiqueta de frecuencia de acceso parece que no hay límite. Cada etiqueta especifica el acceso seguido por los miembros de los niveles de acceso definidos. nivel de acceso asignado permanecerá en vigor hasta el próximo encuentro pestaña Access o cerrar el tipo de cuerpo derecho encontrado en paréntesis.

Beneficios de extracción de datos

Abstracción de datos tiene dos ventajas importantes:

  • clase interna está protegido de error involuntario a nivel de usuario causado daños en el estado del objeto.
  • Con la implementación de la clase pueden cambiar con el tiempo, con el fin de responder a las necesidades cambiantes, o cumplir con esos requisitos no cambie el código de informe de errores a nivel de usuario.

Sección privada define los miembros de datos de la clase, aunque sólo sea en la preparación de dichos autores pueden cambiar libremente los datos. Si se aplican los cambios, sólo tiene que comprobar el código de la clase para ver el impacto que este cambio pueda causar. Si los datos son públicos, cualquier acceso directo a la antigua forma de los miembros de la función de representación de datos son propensos a ser afectados.

Resumen de datos de instancia

Programa en C ++, cualquier clase con miembros de la abstracción de datos pública y privada se puede utilizar como ejemplos. 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. Los miembros privadostotal de usuarios no necesitan saber, pero la clase pueden trabajar fuera necesario.

Estrategia de diseño

Resumen de separar el código en la interfaz y la implementación. Por lo tanto en el diseño de componentes, la interfaz debe seguir siendo independiente de la implementación, por lo que si cambia la implementación subyacente, la interfaz se mantendrá sin cambios.

En este caso, independientemente de cualquier programa mediante la interfaz, la interfaz no se verá afectada, sólo para darse cuenta de la última recompilación.