Encapsulamiento y Validación de Datos en Programación Orientada a Objetos
Resumen
Los Getters y Setters nos permiten leer y escribir (respectivamente) los valores de nuestras variables privadas desde fuera de la clase donde fueron creadas. Con los Getters obtenemos los datos de las variables y con los Setters asignamos o cambiamos su valor.
También puedes usar los atajos de tu IDE favorito para generar los métodos getters y setters de todas o algunas de tus variables.
publicclassPatient{privateString name;publicStringgetName(){return"Patient name is "+this.name;}publicvoidsetName(String newName){this.name = newName;}}
Tambien para generar rapidamente los metodos Getters y Setters en IntelliJ IDEA basta con oprimir Alt+ins , seleccionar Getter o Setter y seleccionar los atributos privados.
Muchas gracias por el tip
¡Muy buen consejo!
Los getters y setters son métodos públicos que nos ayudan a leer y/o modificar nuestras variables privadas. :+1:
Hola profe Juan soy gran admirador suyo vi su caso de éxito y todas las entrevistas que le hicieron. Muy buenas por cierto me inspiro mucho.
Para los que no tienen acceso al menu de Generate en IntelliJ con "ctrl + N" el shortcut es "Alt + Insert"
Gracias Carlos, gran ayuda
Un ejemplo claro para aquellos que no les quedo claro el concepto es cuando creamos una cuenta en algún correo o medio digital que requiera un login, al momento de introducir una contraseña muchos servicios de este tipo nos piden que la contraseña incluya una letra mayúsculas, minúsculas y a veces hasta un carácter especial como un ".", si nosotros no hacemos caso y metemos una contraseña que no cumpla con esta condiciones nos arroja un mensaje de error tantas veces como intentemos crearla sin cumplir con los requerimientos, y solo nos dejara avanzar cuando se cumple la condición requerida, esto asegura que los usuarios siempre introducirán la contraseña cumpliendo con las condiciones requeridas por las políticas de la pagina o servicio.
hay una herramienta que se llama lombok, que te genera muchos metodos como getters y setters o constructores con anotaciones para que quede mas limpio el codigo
Si, me parece una librería super útil. Ahorra muchas lineas de código, y tal como dices, queda la clase visualmente más limpia. Buen aporte :D
¡donde puede buscar buena infor sobre esto?
Para la generación de los getters y setters en intellij IDEA en la versión 2021.3 en Windows lo que tuve que hacer fue:
con un clic en el código buscas la opción de "Generate..."
y luego aparece la misma pantalla me muestra Anahí para la selección.
en el menú superior en la opción de "Code" buscas también la misma opción de "Generate..."
y como ya lo mencionaron con el atajo de teclado "Alt + ins".
Muchas gracias me sirvió mucho
Cada vez se pone más y más interesante el curso, no quiero parar de aprender!!
¿Qué sentido tiene poner los atributos en privado si a la final los vamos a poder acceder mediante los Getters y Setters?
Porque en los Getters y Setters puedes agregar condiciones.
Por ejemplo: en los Setters puedes agregar una condición para evitar que se asigne un valor no válido. Por ejemplo imagina que tienes una máquina para manzanas, pero sólo puedes pelar un máximo de 10 manzanas. Si el usuario intenta agregar un valor mayor a 10 el setter no lo va a dejar.
Qué buen punto 🤔
APUNTES DE LA CLASE
Hay algún curso o clase donde enseñen a relacionar esto con una base de datos?
En el siguiente curso de Persistencia de Datos toca ese tema.
Llevo 4 años estudiando programación en Java y hoy es el primer día que entiendo get y set
Yo ya los habia entendido pero se me hacian muy redundantes. Hoy aprendi a querer usarlos mas:)
Buenos días, existe una falla en la lógica de los ejemplos, tanto aquí como en la sugerida en el enlace de YouTube, y es que esta clase en la realidad funciona como un DTO, y solo serviría como transferencia de datos en la misma aplicación u otros servicios y no debería tener lógica del negocio, aunque en general las explicaciones son muy buenas.
Como puedo entrar a ver encapsula miento mas a detalle?
Hola
Podrías, ver las clases de Curso de Programación Orientada a Objetos:
gracias, ya termine de hacer el curso, estaba muy bueno
Este concepto no lo vi en mis clases de POO en la Universidad, que genial aprender cosas nuevas. 🤠
¿no sería más adecuado que se devuelvan los valores de la altura y el peso en su tipo númerico en vez de todo ese string?
El asunto de imprimir en la consola debería ser aparte, ya que si necesito los valores de esas variables para hacer operaciones matemáticas, tendría que extraerlo de ese string con código adicional
Está buena la consideración. De hecho me preguntaba porqué casi no había visto ese tipo de Setter. Pero bueno, sabemos que todo dependerá del programa que queramos crear. En este caso, podemos decir que no necesitaremos hacer cálculos con esas variables.
Generalmente yo me creaba una clase a parte para generar un isValid() y allí dentro ese metodo colocaba las condiciones necesarias.
Una pregunta en los metodos Getters es lo mismo poner la variable con el this o sin el: