Gruki Logo

Gruki - Documentación de Programación

Java

Encapsulación en Java: Protege tus datos como un Tesoro

Aprende qué es la encapsulación en Java con ejemplos sencillos y cómo usar los métodos getter y setter para controlar el acceso a los datos. ¡Ideal para principiantes!

Imagina que tienes un cofre del tesoro donde guardas tus juguetes más preciados. La encapsulación en Java es como ese cofre: te permite proteger los datos importantes dentro de una clase y controlar cómo se accede a ellos desde afuera.

En lugar de dejar que cualquiera manipule directamente los datos de tu clase, la encapsulación te permite crear métodos especiales para obtener (getter) y modificar (setter) esos datos, como si tuvieras la llave del cofre y solo tú decides quién puede ver o cambiar los juguetes.

Getter y Setter: Las Llaves del Tesoro de tus Datos

Los métodos getter y setter son como las llaves que abren y cierran el cofre de tus datos. El getter te permite obtener el valor de un atributo (ver el juguete) y el setter te permite modificarlo (cambiar el juguete por otro).

Piénsalo así: tienes una clase `Coche` con un atributo `velocidad`. El getter `getVelocidad()` te permite saber la velocidad actual del coche y el setter `setVelocidad()` te permite cambiarla, pero solo dentro de un rango razonable (¡no quieres que el coche vuele!).

Puntos importantes:

  • Por qué usar getter y setter? Porque te permiten validar los datos antes de que se guarden. Por ejemplo, puedes asegurarte de que la velocidad de un coche no sea negativa.
  • Ventajas de la encapsulación: Mayor control sobre los datos, facilita el mantenimiento del código y mejora la seguridad.

Ejemplos de Código

Ejemplo de una clase Coche con encapsulación y métodos getter y setter.

Lenguaje: Java

Explicación del código:

  1. Línea 1: `public class Coche {`: Declara una clase llamada 'Coche'. Es como definir el molde para crear muchos coches diferentes.
  2. Línea 2: ` private String marca;`: Crea una variable llamada 'marca' que solo se puede acceder desde dentro de la clase 'Coche'. Es como el color del coche, que solo puedes ver si estás dentro de la fábrica (la clase).
  3. Línea 3: ` private int velocidad;`: Similar a 'marca', pero para la velocidad. También es privada y solo accesible desde la clase.
  4. Línea 4: ` public Coche(String marca) {`: Este es el constructor de la clase. Es como la línea de ensamblaje donde se crea un nuevo coche. Recibe la marca como entrada.
  5. Línea 5: ` this.marca = marca;`: Asigna la marca recibida al atributo 'marca' del coche que se está creando.
  6. Línea 6: ` this.velocidad = 0;`: Inicializa la velocidad a 0 cuando se crea un nuevo coche.
  7. Línea 7: ` public String getMarca() {`: Este es el 'getter' para la marca. Te permite *obtener* la marca del coche desde fuera de la clase.
  8. Línea 8: ` return marca;`: Devuelve el valor de la 'marca'.
  9. Línea 9: ` public void setMarca(String marca) {`: Este es el 'setter' para la marca. Te permite *cambiar* la marca del coche desde fuera de la clase.
  10. Línea 10: ` this.marca = marca;`: Asigna el nuevo valor de la marca al atributo 'marca'.
  11. Línea 11: ` public int getVelocidad() {`: El getter para la velocidad. Te permite saber a qué velocidad va el coche.
  12. Línea 12: ` return velocidad;`: Devuelve la velocidad.
  13. Línea 13: ` public void setVelocidad(int velocidad) {`: El setter para la velocidad. Te permite acelerar o frenar el coche, pero... ¡con cuidado!
  14. Línea 14: ` if (velocidad >= 0 && velocidad <= 200) {`: Aquí hay una comprobación. Aseguramos que la velocidad no sea negativa ni demasiado alta (más de 200). ¡No queremos que el coche explote!
  15. Línea 15: ` this.velocidad = velocidad;`: Si la velocidad es válida, la asignamos.
  16. Línea 16: ` } else {`: Si la velocidad no es válida (negativa o mayor que 200)...
  17. Línea 17: ` System.out.println("¡Velocidad no válida!");`: ...mostramos un mensaje de error. ¡Cuidado con pisarle demasiado!
  18. Línea 18: ` }`: Fin de la comprobación de la velocidad.
  19. Línea 19: ` }`: Fin del setter para la velocidad.
  20. Línea 20: `}`: Fin de la clase 'Coche'.

Recursos relacionados

Explora más contenido relacionado con Encapsulación y métodos getter y setter. para profundizar tus conocimientos.