Encapsulación de datos en C++
Todos los programas de C++ se componen de los siguientes dos elementos fundamentales:
-
Declaraciones de programa (código) − Esta es la parte de un programa que realiza acciones y se llaman funciones.
-
Datos del programa − Los datos son la información del programa que se ve afectada por las funciones del programa.
La encapsulación es un concepto de Programación Orientada a Objetos que une los datos y las funciones que manipulan los datos, y que los mantiene a salvo de la interferencia externa y el uso indebido. La encapsulación de datos condujo al importante concepto OOP de ocultación de datos .
Encapsulación de datos es un mecanismo para agrupar los datos y las funciones que los utilizan y la abstracción de datos es un mecanismo para exponer solo las interfaces y ocultar los detalles de implementación del usuario.
C++ admite las propiedades de encapsulación y ocultación de datos mediante la creación de tipos definidos por el usuario, llamados clases . Ya hemos estudiado que una clase puede contener private, protected y público miembros De forma predeterminada, todos los elementos definidos en una clase son privados. Por ejemplo −
class Box { public: double getVolume(void) { return length * breadth * height; } private: double length; // Length of a box double breadth; // Breadth of a box double height; // Height of a box };
Las variables largo, ancho y alto son privadas . Esto significa que solo pueden acceder a ellos otros miembros de la clase Box, y ninguna otra parte de su programa. Esta es una forma de lograr la encapsulación.
Para hacer partes de una clase públicas (es decir, accesibles a otras partes de su programa), debe declararlos después de public palabra clave. Todas las variables o funciones definidas después del especificador público son accesibles para todas las demás funciones de su programa.
Hacer que una clase sea amiga de otra expone los detalles de implementación y reduce la encapsulación. Lo ideal es mantener la mayor cantidad de detalles de cada clase ocultos de todas las demás clases como sea posible.
Ejemplo de encapsulación de datos
Cualquier programa de C++ en el que implemente una clase con miembros públicos y privados es un ejemplo de encapsulación y 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 está oculto al mundo exterior, pero es necesario para que la clase funcione correctamente.
Estrategia de diseño
La mayoría de nosotros hemos aprendido a hacer que los miembros de la clase sean privados de forma predeterminada a menos que realmente necesitemos exponerlos. Eso es solo una buena encapsulación .
Esto se aplica con mayor frecuencia a los miembros de datos, pero se aplica por igual a todos los miembros, incluidas las funciones virtuales.
Lenguaje C