Encapsulación en C++

 

En términos normales Encapsulaciónse define como el envoltorio de datos e información bajo una sola unidad. En la programación orientada a objetos, la encapsulación se define como la unión de los datos y las funciones que los manipulan. Considere un ejemplo de encapsulación de la vida real, en una empresa hay diferentes secciones como la sección de cuentas, la sección de finanzas, la sección de ventas, etc. La sección de finanzas maneja todas las transacciones financieras y mantiene registros de todos los datos relacionados con las finanzas. De manera similar, la sección de ventas maneja todas las actividades relacionadas con las ventas y mantiene registros de todas las ventas. Ahora puede surgir una situación en la que, por alguna razón, un funcionario de la sección de finanzas necesite todos los datos sobre las ventas en un mes en particular. En este caso, no se le permite acceder directamente a los datos de la sección de ventas. Primero tendrá que ponerse en contacto con algún otro oficial en la sección de ventas y luego solicitarle que proporcione los datos particulares. Esto es lo que es la encapsulación. Aquí los datos de la sección de ventas y los empleados que pueden manipularlos están envueltos bajo un solo nombre «sección de ventas». 

No podemos acceder a ninguna función de la clase directamente. Necesitamos un objeto para acceder a esa función que está usando el miembro de la variable de esa clase.

La función que estamos haciendo dentro de la clase, debe usar la variable de todos los miembros, entonces solo se llama encapsulación.

Si no hacemos una función dentro de la clase que usa la variable miembro de la clase, entonces no lo llamamos encapsulación.  

 

Encapsulation in C++ Encapsulation also lead to data abstraction or hiding. As using encapsulation also hides the data. In the above example the data of any of the section like sales, finance or accounts is hidden from any other section. In C++ encapsulation can be implemented using Class and access modifiers. Look at the below program: 

CPP

// c++ program to explain
// Encapsulation
 
#include<iostream>
using namespace std;
 
class Encapsulation
{
    private:
        // data hidden from outside world
        int x;
         
    public:
        // function to set value of
        // variable x
        void set(int a)
        {
            x =a;
        }
         
        // function to return value of
        // variable x
        int get()
        {
            return x;
        }
};
 
// main function
int main()
{
    Encapsulation obj;
     
    obj.set(5);
     
    cout<<obj.get();
    return 0;
}

producción:

5

En el programa anterior, la variable x se hace privada. Solo se puede acceder a esta variable y manipularla usando las funciones get() y set() que están presentes dentro de la clase. Por lo tanto, podemos decir que aquí, la variable x y las funciones get() y set() están unidas, lo que no es más que una encapsulación.

Rol de los especificadores de acceso en la encapsulación

Como hemos visto en el ejemplo anterior, los especificadores de acceso juegan un papel importante en la implementación de la encapsulación en C++. El proceso de implementación de la encapsulación se puede subdividir en dos pasos:

  1. Los miembros de datos deben etiquetarse como privados utilizando los especificadores de acceso privado .
  2. La función miembro que manipula los miembros de datos debe etiquetarse como pública utilizando el especificador de acceso público

Este artículo es una contribución de Harsh Agarwal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *