Encapsulación en Java

¿Qué es la encapsulación? Java?

Encapsulación en Java es un mecanismo para agrupar variables (datos) y métodos (código) en una sola unidad. Es el proceso de ocultar detalles de información y proteger los datos y el comportamiento del objeto. Es uno de los cuatro conceptos importantes de la programación orientada a objetos. La clase encapsulada es fácil de probar, por lo que también es mejor para las pruebas unitarias.

Haga clic en aquí si el video no es accesible

Aprenda la encapsulación en Java con ejemplo

Para comprender qué es la encapsulación en detalle, considere la siguiente clase de cuenta bancaria con métodos de depósito y visualización de saldo

class Account {
    private int account_number;
    private int account_balance;

    public void show Data() {
        //code to show data 
    }

    public void deposit(int a) {
        if (a < 0) {
            //show error 
        } else
            account_balance = account_balance + a;
    }
}

Supongamos que un hacker ha conseguido acceder al código de su cuenta bancaria. Ahora, intenta depositar la cantidad de -100 en su cuenta de dos maneras. Veamos su primer método o enfoque.

Enfoque 1: Intenta depositar una cantidad no válida (digamos -100) en su cuenta bancaria manipulando el código.

Encapsulación en Java

Ahora, la pregunta es – ¿Es eso posible? Investiguemos. Por lo general, las variables de una clase se configuran como “privadas”, como se muestra a continuación. Solo se puede acceder a ellas con los métodos definidos en la clase. Ninguna otra clase u objeto puede acceder a ellas.

Encapsulación en Java

Si un miembro de datos es privado, significa que solo se puede acceder a él dentro de la misma clase. Ninguna clase externa puede acceder a un miembro de datos privado o variable de otra clase. Por lo tanto, en nuestro caso, el hacker no puede depositar la cantidad -100 en su cuenta.

Encapsulación en Java

Enfoque 2:El primer intento del hacker no logró depositar el monto. Luego, intenta depositar un monto de -100 utilizando el método "depositar".

Encapsulación en Java

Pero la implementación del método tiene una verificación de valores negativos. Por tanto, el segundo enfoque también fracasa.

Encapsulación en Java

Por lo tanto, nunca expone sus datos a un tercero. Lo que hace que su aplicación sea segura.

Encapsulación en Java

Todo el código puede considerarse una cápsula y la comunicación sólo se puede realizar a través de mensajes. De ahí el nombre de encapsulación.

Ocultación de datos en Java

Ocultación de datos en Java Oculta las variables de una clase a otras clases. Solo se puede acceder a ellas a través del método de su clase actual. Oculta los detalles de implementación a los usuarios. Pero más que ocultar datos, está pensado para una mejor gestión o agrupación de datos relacionados. Para lograr un menor grado de encapsulación en JavaPuedes usar modificadores como “protegido” o “público”. Con la encapsulación, los desarrolladores pueden cambiar una parte del código fácilmente sin afectar a las demás.

Getter y Setter en Java

Getter y Setter en Java Son dos métodos convencionales que se utilizan para recuperar y actualizar valores de una variable. Se utilizan principalmente para crear, modificar, eliminar y ver los valores de las variables. El método de establecimiento se utiliza para actualizar valores y el método de obtención se utiliza para leer o recuperar los valores. También se les conoce como accesor y mutador.

El siguiente código es un ejemplo de métodos getter y setter:

class Account{ 
private int account_number;
private int account_balance; 
    // getter method
	public int getBalance() {
        return this.account_balance;
    }
    // setter method
	public void setNumber(int num) {
        this.account_number = num;
    }
}

En el ejemplo anterior, el método getBalance() es un método getter que lee el valor de la variable account_balance y el método setNumber() es un método setter que establece o actualiza el valor de la variable account_number.

Abstracción versus encapsulación

A menudo la encapsulación se malinterpreta con Abstracción. Estudiemos-

  • La encapsulación se trata más de "Cómo" lograr una funcionalidad.
  • La abstracción se trata más de "Qué" puede hacer una clase.

Un ejemplo sencillo para entender esta diferencia es el de un teléfono móvil, en el que la lógica compleja de la placa de circuito está encapsulada en una pantalla táctil y se proporciona una interfaz para abstraerla.

Ventajas de la encapsulación en Java

  • La encapsulación vincula los datos con sus funcionalidades relacionadas. Aquí funcionalidades significan "métodos" y datos significan "variables".
  • Entonces mantenemos variables y métodos en un solo lugar. Ese lugar es "clase". La clase es la base para la encapsulación.
  • Con Java Encapsulación, puede ocultar (restringir el acceso) a miembros de datos críticos en su código, lo que mejora la seguridad.
  • Como hemos comentado antes, si un miembro de datos se declara “privado”, solo se puede acceder a él dentro de la misma clase. Ninguna clase externa puede acceder a un miembro de datos (variable) de otra clase.
  • Sin embargo, si necesita acceder a estas variables, debe usar “captador” y “establecedor” públicos métodos.