Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Abstracción de datos en C++

La abstracción de datos se refiere a proporcionar solo información esencial al mundo exterior y ocultar sus detalles de fondo, es decir, representar la información necesaria en el programa sin presentar los detalles.

La abstracción de datos es una técnica de programación (y diseño) que se basa en la separación de la interfaz y la implementación.

Tomemos un ejemplo de la vida real de un televisor, que puede encender y apagar, cambiar el canal, ajustar el volumen y agregar componentes externos como altavoces, VCR y reproductores de DVD, PERO no conoce sus detalles internos, que es decir, no sabes cómo recibe las señales por aire o por cable, cómo las traduce y finalmente las muestra en la pantalla.

Por lo tanto, podemos decir que un televisor separa claramente su implementación interna de su interfaz externa y puede jugar con sus interfaces como el botón de encendido, el cambiador de canales y el control de volumen sin tener ningún conocimiento de sus componentes internos.

En C++, las clases proporcionan un gran nivel de abstracción de datos . Proporcionan suficientes métodos públicos al mundo exterior para jugar con la funcionalidad del objeto y manipular los datos del objeto, es decir, estado sin saber realmente cómo se ha implementado la clase internamente.

Por ejemplo, su programa puede hacer una llamada a sort() función sin saber qué algoritmo usa realmente la función para ordenar los valores dados. De hecho, la implementación subyacente de la funcionalidad de clasificación podría cambiar entre las versiones de la biblioteca, y mientras la interfaz permanezca igual, la llamada a la función seguirá funcionando.

En C++, usamos clases para definir nuestros propios tipos de datos abstractos (ADT). Puedes usar el cout objeto de clase ostream para transmitir datos a una salida estándar como esta −

Demostración en vivo
#include <iostream>
using namespace std;

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

Aquí, no necesita entender cómo cout muestra el texto en la pantalla del usuario. Solo necesita conocer la interfaz pública y la implementación subyacente de 'cout' es libre de cambiar.

Las etiquetas de acceso exigen abstracción

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

No hay restricciones sobre la frecuencia con la que puede aparecer una etiqueta de acceso. Cada etiqueta de acceso especifica el nivel de acceso de las definiciones de miembros subsiguientes. El nivel de acceso especificado permanece vigente hasta que se encuentra la siguiente etiqueta de acceso o se ve la llave derecha de cierre del cuerpo de la clase.

Beneficios de la abstracción de datos

La abstracción de datos proporciona dos ventajas importantes −

Al definir miembros de datos solo en la sección privada de la clase, el autor de la clase puede realizar cambios en los datos. Si la implementación cambia, solo se debe examinar el código de clase para ver qué efecto puede tener el cambio. Si los datos son públicos, entonces cualquier función que acceda directamente a los miembros de datos de la representación anterior podría fallar.

Ejemplo de abstracción de datos

Cualquier programa de C++ en el que implemente una clase con miembros públicos y privados es un ejemplo de abstracción de datos. Considere el siguiente ejemplo −

Demostración en vivo
#include <iostream>
using namespace std;

class Adder {
   public:
      // constructor
      Adder(int i = 0) {
         total = i;
      }
      
      // interface to outside world
      void addNum(int number) {
         total += number;
      }
      
      // interface to outside world
      int getTotal() {
         return total;
      };
      
   private:
      // hidden data from outside world
      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 anterior se compila y ejecuta, produce el siguiente resultado −

Total 60

La clase anterior suma números y devuelve la suma. Los miembros públicos - addNum y obtenerTotal son las interfaces con el mundo exterior y un usuario necesita conocerlas para usar la clase. El miembro privado total es algo que el usuario no necesita saber, pero es necesario para que la clase funcione correctamente.

Estrategia de diseño

La abstracción separa el código en interfaz e implementación. Por lo tanto, mientras diseña su componente, debe mantener la interfaz independiente de la implementación para que, si cambia la implementación subyacente, la interfaz permanezca intacta.

En este caso, independientemente de los programas que utilicen estas interfaces, no se verían afectados y solo necesitarían una recompilación con la última implementación.


Lenguaje C

  1. Tipos de datos de C++
  2. Operadores de C++
  3. Clases y objetos de C++
  4. Plantillas de clase de C++
  5. Tipo de datos Char de C++ con ejemplos
  6. Java - Abstracción
  7. Java - Estructuras de datos
  8. Clases de almacenamiento en C++
  9. Estructuras de datos de C++
  10. Polimorfismo en C++
  11. Encapsulación de datos en C++