Encapsulación en OOP de Java con un ejemplo

¿Qué es la encapsulación en Java?

La encapsulación es un principio de envolver datos (variables) y codificar juntos como una sola unidad. Es uno de los cuatro conceptos de OOP. Los otros tres son Herencia, Polimorfismo y Abstracción.

En este tutorial, aprenderá-

Aprende la encapsulación con un ejemplo

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

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

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

Ahora, la pregunta es: ¿Es eso posible? Deje investigar

Por lo general, una variable en una clase se establece como “privada” como se muestra a continuación. Solo se puede acceder con los métodos definidos en la clase. Ninguna otra clase u objeto puede acceder a ellos.

Si un miembro de datos es privado, significa que solo se puede acceder dentro de la misma clase. Ninguna clase externa puede acceder a miembros de datos privados o variables de otra clase.

Entonces, en nuestro caso, el hacker no puede depositar el monto -100 en su cuenta.

Método 2 : el primer enfoque de Hacker no pudo depositar la cantidad. Luego, intenta depositar una cantidad de -100 mediante el método de “depósito”.

Pero la implementación del método tiene una comprobación de valores negativos. Entonces, el segundo enfoque también falla.

Por lo tanto, nunca expones tus datos a una parte externa. Lo que hace que su aplicación sea segura.

Se puede pensar en el código completo como una cápsula, y solo se puede comunicar a través de los mensajes. De ahí el nombre de encapsulación.

Ocultación de datos en Java

Con frecuencia, la encapsulación de Java se conoce como ocultación de datos . Pero más que el ocultamiento de datos, el concepto de encapsulación está destinado a una mejor gestión o agrupación de datos relacionados.

Para lograr un menor grado de encapsulación en Java, puede 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 los demás.

Métodos Getter y Setter en Java

Si un miembro de datos se declara “privado”, solo se puede acceder a él dentro de la misma clase. Ninguna clase externa puede acceder al miembro de datos de esa clase. Si necesita acceder a estas variables, debe usar los métodos públicos “getter” y “setter”.

Los métodos de Getter y Setter se utilizan para crear, modificar, eliminar y ver los valores de las variables.

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

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

Abstracción vs. Encapsulación

A menudo, la encapsulación se entiende mal 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 simple ejemplo para entender esta diferencia es un teléfono móvil. Donde la lógica compleja en la placa de circuito está encapsulada en una pantalla táctil, y se proporciona la interfaz para abstraerla.

Ventajas de la encapsulación en Java

  • La encapsulación vincula los datos con sus funcionalidades relacionadas. Aquí las funcionalidades significan “métodos” y los 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 Encapsulation, puede ocultar (restringir el acceso) a los miembros de datos críticos en su código, lo que mejora la seguridad
  • Como mencionamos anteriormente, si un miembro de datos se declara “privado”, solo se puede acceder a él dentro de la misma clase. Ninguna clase externa puede acceder al miembro de datos (variable) de otra clase.
  • Sin embargo, si necesita acceder a estas variables, debe utilizar los métodos públicos “getter” y “setter” .

 

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *