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

Encapsulamiento de Datos en C++: Protege tu Código

Todos los programas C++ están compuestos por los siguientes dos elementos fundamentales:

El encapsulamiento es un concepto de Programación Orientada a Objetos que une los datos y las funciones que manipulan los datos, y que mantiene ambos a salvo de interferencias y mal uso externos. El encapsulamiento de datos llevó al importante concepto de POO de ocultamiento de datos.

El encapsulamiento de datos es un mecanismo de agrupar los datos y las funciones que los usan, y la abstracción de datos es un mecanismo de exponer solo las interfaces y ocultar los detalles de implementación al usuario.

C++ soporta las propiedades de encapsulamiento y ocultamiento de datos a través de la creación de tipos definidos por el usuario, llamados clases. Ya hemos estudiado que una clase puede contener miembros private, protected y public. Por defecto, todos los elementos definidos en una clase son private. Por ejemplo:

class Caja {
public:
    double obtenerVolumen(void) {
        return largo * ancho * alto;
    }
private:
    double largo;   // Largo de una caja
    double ancho;   // Ancho de una caja
    double alto;    // Alto de una caja
};

Las variables largo, ancho y alto son private. Esto significa que solo pueden ser accedidas por otros miembros de la clase Caja, y no por ninguna otra parte de tu programa. Esta es una forma en que se logra el encapsulamiento.

Para hacer partes de una clase public (es decir, accesibles a otras partes de tu programa), debes declararlas después de la palabra clave public. Todas las variables o funciones definidas después del especificador public son accesibles por todas las demás funciones en tu programa.

Hacer una clase amiga de otra expone los detalles de implementación y reduce el encapsulamiento. Lo ideal es mantener tantos detalles de cada clase ocultos de todas las otras clases como sea posible.

Ejemplo de Encapsulamiento de Datos

Cualquier programa C++ donde implementes una clase con miembros públicos y privados es un ejemplo de encapsulamiento de datos y abstracción de datos. Considera el siguiente ejemplo:

#include <iostream>
using namespace std;
class Sumador {
public:
    // constructor
    Sumador(int i = 0) {
        total = i;
    }
    // interfaz al mundo exterior
    void agregarNum(int numero) {
        total += numero;
    }
    // interfaz al mundo exterior
    int obtenerTotal() {
        return total;
    };
private:
    // datos ocultados del mundo exterior
    int total;
};
int main() {
    Sumador a;
    a.agregarNum(10);
    a.agregarNum(20);
    a.agregarNum(30);
    cout << "Total " << a.obtenerTotal() << 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 retorna la suma. Los miembros públicos agregarNum y obtenerTotal son las interfaces al mundo exterior y un usuario necesita conocerlos para usar la clase. El miembro privado total es algo que está oculto del mundo exterior, pero es necesario para que la clase opere correctamente.

Estrategia de Diseño

La mayoría de nosotros hemos aprendido a hacer miembros de clase private por defecto a menos que realmente necesitemos exponerlos. Eso es solo buen encapsulamiento.

Esto se aplica más frecuentemente a miembros de datos, pero se aplica igualmente a todos los miembros, incluyendo funciones virtuales.

Lenguaje C

  1. Entendiendo los Tipos de Datos en C++: Fundamentos, Modificadores y Mejores Prácticas
  2. Dominando los Operadores en C++: Guía Completa con Ejemplos Prácticos
  3. Clases y Objetos en C++: Guía Práctica de Programación Orientada a Objetos
  4. Dominando las plantillas de clase en C++: guía práctica
  5. Dominando el tipo de dato char en C++: Declaración, ASCII y técnicas de conversión
  6. Entendiendo las Clases de Almacenamiento en C++: Alcance, Vida y Uso
  7. Estructuras de Datos en C++: Construyendo Programas Eficientes con Arrays, Structs y Más
  8. Entendiendo el Polimorfismo en C++: Guía Práctica
  9. Dominando la encapsulación en Java: Guía práctica de ocultamiento de datos
  10. Encapsulamiento en Java: Ocultación Segura de Datos y Control de Acceso
  11. Estructuras de Datos en Java: Explorando Clases Core y Collections Framework