La abstracción de datos es una de las características más esenciales e importantes de la programación orientada a objetos en C++. Abstracción significa mostrar solo la información esencial y ocultar los detalles. La abstracción de datos se refiere a proporcionar solo información esencial sobre los datos al mundo exterior, ocultando los detalles de fondo o la implementación.
Considere un ejemplo de la vida real de un hombre que conduce un automóvil. El hombre solo sabe que presionar los aceleradores aumentará la velocidad del automóvil o aplicar los frenos detendrá el automóvil, pero no sabe cómo al presionar el acelerador la velocidad en realidad aumenta, no sabe sobre el mecanismo interno del automóvil o el implementación de acelerador, frenos etc en el coche. Esto es lo que es la abstracción.
Abstracción usando Clases: Podemos implementar Abstracción en C++ usando clases. La clase nos ayuda a agrupar miembros de datos y funciones de miembros utilizando los especificadores de acceso disponibles. Una clase puede decidir qué miembro de datos será visible para el mundo exterior y cuál no.
Abstracción en archivos de encabezado: Un tipo más de abstracción en C++ pueden ser archivos de encabezado. Por ejemplo, considere el método pow() presente en el archivo de encabezado math.h. Cada vez que necesitamos calcular la potencia de un número, simplemente llamamos a la función pow() presente en el archivo de encabezado math.h y pasamos los números como argumentos sin conocer el algoritmo subyacente según el cual la función realmente calcula la potencia de los números.
Abstracción usando especificadores de acceso
Los especificadores de acceso son el pilar principal de la implementación de la abstracción en C++. Podemos usar especificadores de acceso para imponer restricciones a los miembros de la clase. Por ejemplo:
- Se puede acceder a los miembros declarados como públicos en una clase desde cualquier parte del programa.
- Solo se puede acceder a los miembros declarados como privados en una clase desde dentro de la clase. No se permite acceder a ellos desde ninguna parte del código fuera de la clase.
Podemos implementar fácilmente la abstracción utilizando las dos funciones anteriores proporcionadas por los especificadores de acceso. Digamos que los miembros que definen la implementación interna se pueden marcar como privados en una clase. Y la información importante que se necesita dar al mundo exterior se puede marcar como pública. Y estos miembros públicos pueden acceder a los miembros privados ya que están dentro de la clase.
Ejemplo :
#include <iostream> using namespace std; class implementAbstraction { private: int a, b; public: // method to set values of // private members void set(int x, int y) { a = x; b = y; } void display() { cout<<"a = " <<a << endl; cout<<"b = " << b << endl; } }; int main() { implementAbstraction obj; obj.set(10, 20); obj.display(); return 0; }
Producción:
a = 10 b = 20
Puede ver en el programa anterior que no se nos permite acceder a las variables a y b directamente, sin embargo, se puede llamar a la función set() para establecer los valores en a y b y la función display() para mostrar los valores de a y b.
Ventajas de la abstracción de datos :
- Ayuda al usuario a evitar escribir el código de bajo nivel
- Evita la duplicación de código y aumenta la reutilización.
- Puede cambiar la implementación interna de la clase de forma independiente sin afectar al usuario.
- Ayuda a aumentar la seguridad de una aplicación o programa, ya que solo se proporcionan detalles importantes al usuario.
Este artículo es una contribución de Harsh Agarwal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA