Que Es El Encapsulamiento En Programacion Orientada A Objetos

El encapsulamiento, en la Programación Orientada a Objetos (POO), es como una cápsula protectora alrededor de los datos y los métodos que operan sobre esos datos.
¿Qué significa esto en realidad?
Imagina una medicina. La medicina (los datos) está dentro de una cápsula (el objeto). No puedes acceder directamente a la medicina sin pasar por la cápsula. La cápsula controla cómo interactúas con la medicina. Esto es encapsulamiento.
En la práctica, el encapsulamiento implica combinar atributos (datos) y métodos (funciones) que trabajan con esos atributos, dentro de una sola unidad, llamada clase.
Must Read
Ocultando detalles: Protegiendo la información
Un aspecto clave del encapsulamiento es la ocultación de la información. Significa restringir el acceso directo a ciertos atributos y métodos de un objeto. Se declaran como privados.
¿Por qué es importante? Protege los datos de modificaciones accidentales o incorrectas desde fuera del objeto. Piensa en una cuenta bancaria. No quieres que cualquiera pueda cambiar tu saldo directamente.

Solo puedes acceder a los atributos privados mediante métodos públicos especiales, llamados getters (para obtener el valor) y setters (para modificar el valor, usualmente con validaciones).
Ejemplo: Si tienes una clase `Coche` con un atributo `velocidad` que es privado, no puedes hacer `miCoche.velocidad = 200;` desde fuera de la clase. En cambio, usarías un método `miCoche.setVelocidad(200);` y dentro de `setVelocidad` podrías verificar que la velocidad sea un valor válido.

Beneficios del encapsulamiento
El encapsulamiento ofrece varias ventajas:
- Control: Controlas cómo se acceden y modifican los datos.
- Seguridad: Proteges los datos de manipulación indebida.
- Mantenibilidad: Cambiar la implementación interna de una clase no afecta a otras partes del código, siempre que la interfaz (los métodos públicos) permanezca igual.
- Reutilización: Facilita la reutilización de código, ya que las clases encapsulan su propia lógica.
Encapsulamiento en la vida real
Piensa en un motor de coche. No necesitas saber cómo funciona internamente cada pieza para conducirlo. Solo interactúas con la interfaz: el volante, los pedales, etc. El encapsulamiento te permite usar el motor sin necesidad de conocer los detalles internos, protegiendo al mismo tiempo sus delicadas piezas.
En resumen, el encapsulamiento es una herramienta poderosa para crear código más robusto, seguro y fácil de mantener en la Programación Orientada a Objetos.
