Encapsulación C ++ (con ejemplos)

En este tutorial, aprenderemos sobre la encapsulación en C ++ con la ayuda de ejemplos.

La encapsulación es una de las características clave de la programación orientada a objetos. Implica la agrupación de miembros de datos y funciones dentro de una sola clase.

La combinación de miembros de datos y funciones similares dentro de una clase también ayuda a ocultar los datos.

Encapsulación C ++

En general, la encapsulación es un proceso de empaquetar código similar en un solo lugar.

En C ++, podemos agrupar miembros de datos y funciones que operan juntos dentro de una sola clase. Por ejemplo,

 class Rectangle ( public: int length; int breadth; int getArea() ( return length * breadth; ) );

En el programa anterior, la función getArea()calcula el área de un rectángulo. Para calcular el área, necesita largo y ancho.

Por lo tanto, los miembros de datos (largo y ancho) y la función getArea()se mantienen juntos en la Rectangleclase.

Encapsulación en C ++

Ejemplo 1: Encapsulación C ++

 // Program to calculate the area of a rectangle #include using namespace std; class Rectangle ( public: // Variables required for area calculation int length; int breadth; // Constructor to initialize variables Rectangle(int len, int brth) : length(len), breadth(brth) () // Function to calculate area int getArea() ( return length * breadth; ) ); int main() ( // Create object of Rectangle class Rectangle rect(8, 6); // Call getArea() function cout << "Area = " << rect.getArea(); return 0; )

Salida

 Área = 48

En el ejemplo anterior, estamos calculando el área de un rectángulo.

Para calcular un área, necesitamos dos variables: longitud y anchura y una función: getArea(). Por lo tanto, agrupamos estas variables y funciones dentro de una sola clase llamada Rectángulo.

Aquí, también se puede acceder a las variables y funciones desde otras clases. Por lo tanto, esto no es ocultar datos .

Esto es solo encapsulación . Solo mantenemos juntos códigos similares.

Nota: la gente suele considerar la encapsulación como un ocultamiento de datos, pero eso no es del todo cierto.

La encapsulación se refiere a la agrupación de campos y métodos relacionados. Esto se puede utilizar para lograr la ocultación de datos. La encapsulación en sí misma no esconde datos.

¿Por qué la encapsulación?

  • En C ++, la encapsulación nos ayuda a mantener juntas las funciones y los datos relacionados, lo que hace que nuestro código sea más limpio y fácil de leer.
    • Ayuda a controlar la modificación de nuestros miembros de datos.
      Considere una situación en la que queremos que el campo de longitud de una clase no sea negativo. Aquí podemos hacer que la variable de longitud sea privada y aplicar la lógica dentro del método setAge(). Por ejemplo,
       class Rectangle ( private: int age; public: void setLength(int len) ( if (len>= 0) length = len; ) );
    • Las funciones getter y setter proporcionan acceso de solo lectura o solo escritura a los miembros de nuestra clase. Por ejemplo,
       getLength() // provides read-only access setLength() // provides write-only access
    • Ayuda a desacoplar los componentes de un sistema. Por ejemplo, podemos encapsular código en varios paquetes.
      Estos componentes desacoplados (paquetes) se pueden desarrollar, probar y depurar de forma independiente y simultánea. Y cualquier cambio en un componente en particular no tiene ningún efecto sobre otros componentes.
    • También podemos lograr la ocultación de datos mediante encapsulación. En el Ejemplo 1 , si cambiamos las variables de longitud y amplitud a privateo protected, entonces el acceso a estos campos está restringido.
      Y se mantienen ocultos de las clases externas. A esto se le llama ocultación de datos .

    Ocultar datos

    La ocultación de datos es una forma de restringir el acceso de nuestros miembros de datos al ocultar los detalles de implementación. La encapsulación también proporciona una forma de ocultar datos.

    Podemos usar modificadores de acceso para lograr la ocultación de datos en C ++. Por ejemplo,

    Ejemplo 2: Ocultación de datos de C ++ con el especificador privado

     #include using namespace std; class Rectangle ( private: // Variables required for area calculation int length; int breadth; public: // Setter function for length void setLength(int len) ( length = len; ) // Setter function for breadth void setBreadth(int brth) ( breadth = brth; ) // Getter function for length int getLength() ( return length; ) // Getter function for breadth int getBreadth() ( return breadth; ) // Function to calculate area int getArea() ( return length * breadth; ) ); int main() ( // Create object of Rectangle class Rectangle rectangle1; // Initialize length using Setter function rectangle1.setLength(8); // Initialize breadth using Setter function rectangle1.setBreadth(6); // Access length using Getter function cout << "Length = " << rectangle1.getLength() << endl; // Access breadth using Getter function cout << "Breadth = " << rectangle1.getBreadth() << endl; // Call getArea() function cout << "Area = " << rectangle1.getArea(); return 0; )

    Salida

     Largo = 8 Ancho = 6 Área = 48

    Aquí, hemos realizado las variables de longitud y anchura private.

    Esto significa que no se puede acceder directamente a estas variables fuera de la Rectangleclase.

    Para acceder a estas variables privadas, hemos utilizado publicfunciones setLength(), getLength(), setBreadth(), y getBreadth(). Se denominan funciones getter y setter.

    Hacer las variables privadas nos permitió restringir el acceso no autorizado desde fuera de la clase. Esta es la ocultación de datos .

    Si intentamos acceder a las variables de la main()clase, obtendremos un error.

     // error: rectangle1.length is inaccessible rectangle1.length = 8; // error: rectangle1.breadth is inaccessible rectangle1.length = 6;

Articulos interesantes...