No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Java SE Orientado a Objetos

Curso de Java SE Orientado a Objetos

Anahí Salgado Díaz de la Vega

Anahí Salgado Díaz de la Vega

Getters y Setters

13/38
Recursos

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.

public class Patient {
  private String name;

  public String getName() {
    return "Patient name is " + this.name;
  }

  public void setName(String newName) {
    this.name = newName;
  }
}

Aportes 106

Preguntas 20

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

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.

Los getters y setters son métodos públicos que nos ayudan a leer y/o modificar nuestras variables privadas. 👍

Para los que no tienen acceso al menu de Generate en IntelliJ con “ctrl + N” el shortcut es “Alt + Insert”

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

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:

  1. 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.

  2. en el menú superior en la opción de “Code” buscas también la misma opción de “Generate…”

  3. y como ya lo mencionaron con el atajo de teclado “Alt + ins”.

Cada vez se pone más y más interesante el curso, no quiero parar de aprender!!



APUNTES DE LA CLASE

Hay algún curso o clase donde enseñen a relacionar esto con una base de datos?

Llevo 4 años estudiando programación en Java y hoy es el primer día que entiendo get y set

Si quieren complementar la clase de Getters y Setters les comparto esta clase universitaria para comprender a fondo como utilizarlos:
https://www.youtube.com/watch?v=7BCOXfKl8Cc&list=PLhU2otMFcLuCQPcEcRQfi3UQQ-ms5YH0L&index=15&t=412s

Como puedo entrar a ver encapsula miento mas a detalle?

Este concepto no lo vi en mis clases de POO en la Universidad, que genial aprender cosas nuevas. 🤠

Dejo por acá un link por si quieren profundizar en este tema

https://www.youtube.com/watch?v=7ALMZymOs_s&list=PLU8oAlHdN5BktAXdEVCLUYzvDyqRQJ2lk&index=30

✨ Los métodos Getters y Setters permiten leer y escribir respectivamente los datos.

A las propiedades private solo se puede accederse por medio de métodos.

Para generar los getters y setters en NetBenas solo hacemos click derecho dentro de los corchetes de la clase y seleccionamos la opciones de “Insertar código” y por último elegimos la opción de estos métodos

Metodos Getters y Setters Java

Estas clases estan muy buenas

Muy buena clase!. Para generar los getter y Setter automaticamente en Windows hay que presionar Alt + Ins.

Get es para presentar el dato. Set, es para introducir el dato.

**⭐RESUMEN:** * Los métodos GET y SET se encargan de validar los parámetros Y DATOS QUE SE QUIERAN ASIGNAR * El método constructor se encarga de definir los parámetros obligatorios
Todavía no se ve el tema de excepciones, pero un sentido del uso de setters es que no se pueda setteear cualquier cosa.. por ejemplo, en el caso del peso, no debería ser nunca negativo, lo mismo la altura.. el setter puede hacer este control y lanzar una excepcion si no se cumple la condicion

Para los que estén haciendo en Eclipse, los Getter y Setter automáticos son así:

—Clic derecho sobre el código > Source > Generate Getters and Setters

A mi no me funciono el generate con el control+n, utilice las teclas alt+insert

Tambien en eclipse hay una opción para generar automáticamente los Getters y Setters.

Deberian de hacer un curso de Groovy en Intellij puedes desarrollar de manera muy agil, en modo Grails on Groovy by Java

En eclipse es con click derecho, Source y Generate Getters And Setters.

en la universidad vi Getters y Setters pero nunca lo comprendi y como no lo entendi casi no lo usaba ahora lo usare mas gracias
Los getters y setters en Java son métodos que permiten acceder y modificar los atributos de una clase, asegurando el encapsulamiento. Su uso principal es proteger los datos de acceso no autorizado y permitir validaciones antes de realizar modificaciones. En entornos profesionales, es recomendable seguir las convenciones de nombrado (por ejemplo, `getNombre()` y `setNombre()`) y implementar lógica de validación en los setters para garantizar la integridad de los datos. Esto mejora la mantenibilidad y claridad del código.
De la siguiente manera pude hacer la validación de los números de teléfono, para que a pesar de ser String este solo reciba números. ```java public void setPhoneNumber(String phoneNumber) { if (!checkPhoneNumber(phoneNumber)) { JOptionPane.showMessageDialog(null, "The phone number is incorrect"); }else { JOptionPane.showMessageDialog(null, "The phone number has been registered"); this.phoneNumber = phoneNumber; } } private static boolean checkPhoneNumber(String datos){ return datos.matches("[0-9]{1,10}"); } ```
Nunca entendí cual es prpósito de esto, realmente termina siendo la misma burra, pero revolcada: patient1.email = '[email protected]'; es lo mismo que: patient1.setEmail('[email protected]'); de todos modos estas cambiando el valor. En donde queda la proteccion? Estas cerrando la puerta pero con la llave puesta 🙄 Tendria mas sentido que por ejemplo si el correo, es un dato que por ninguna razon se pude cambiar, entonces lo declaro private, y NO le pongo método set, solo GET. Mi humilde opinion. Saludos a la comunidad
# **Getters & Setters** ## **Introduction** In Java, encapsulation ensures that the internal state of an object is protected from unauthorized access or modification by external entities. While we declare variables as private to achieve this encapsulation, we often need a way to interact with and manipulate these private variables from outside the class. This is where **getters** and **setters** come into play. ## **Getters** A **getter** is a method that allows us to retrieve the value of a private variable. It provides controlled access to the data without exposing the variable directly. By convention, the method name usually begins with "get" followed by the variable name. public class Patient { private String name; public String getName() { return "Patient name is " + this.name; } } ## **Setters** A **setter** is a method that enables us to modify the value of a private variable. It allows controlled modification of the data, ensuring that any changes follow the rules or conditions defined within the class. Conventionally, the method name starts with "set" followed by the variable name. public class Patient { private String name; public void setName(String newName) { this.name = newName; } } ## **Usage Example** public class Main { public static void main(String\[] args) { Patient patient = new Patient(); // Using the setter to modify the name patient.setName("John Doe"); // Using the getter to retrieve the name System.out.println(patient.getName()); } } ## **Benefits of Getters & Setters** 1. **Encapsulation**: Getters and setters allow us to encapsulate the internal state of an object while providing controlled access. 2. **Flexibility**: They enable us to add logic or conditions when getting or setting values, ensuring data integrity. 3. **Maintenance**: Easy to modify the internal implementation without affecting external code that uses the class. ## **Conclusion** Getters and setters are essential tools for achieving encapsulation in Java. They provide a secure and controlled interface for interacting with private variables, contributing to the overall robustness and maintainability of the code.
```java public class Patient{ int id; private String Name; private String email; private String address; private String phoneNumber; private double weight; private double height Patient(String name, String email){ this.name = name; this.email = email; } public voiid setWeight(double weight){ this.weight = weight; } public String getWeight(){ return this.weight + "kg."; } } ```aqui tenemos el primer ejemplo de getter y setter de la profe, con el getter hace que se imprima el weight con "kg."
los getters: nos permiten leer especificamente los valores de las variables los Setters: nos permiten asignar o cambiar la variable
Mira este tutorial si te quedaste con dudas del método SET y GET <https://platzi.com/tutoriales/1629-java-oop/33513-entiende-como-funcionan-los-metodos-set-y-get/>
**Entendiendo utilidad de métodos SET y GET** ![](https://static.platzi.com/media/user_upload/tutorial-1-531cc1d0-17a0-4b96-bd45-8fc2ff426cce.jpg) ![](https://static.platzi.com/media/user_upload/tutorial-2-a1c4902a-f98d-458b-8e75-78f65d8f6eb4.jpg) ![](https://static.platzi.com/media/user_upload/tutorial-3-699ae3da-4c35-4752-8404-6a851acf90c0.jpg) ![](https://static.platzi.com/media/user_upload/tutorial-4-9c7fcd0f-a225-4a52-87a6-a9de218f662a.jpg) ![](https://static.platzi.com/media/user_upload/tutorial-5-44a5d187-a49f-413d-9719-940b00d8e784.jpg) ![](https://static.platzi.com/media/user_upload/tutorial-6-1b62a576-c154-4f3d-a35a-2c8431db5459.jpg) ![](https://static.platzi.com/media/user_upload/tutorial-7-f95fb5df-6906-44f1-b115-193af0268bb1.jpg) ![](https://static.platzi.com/media/user_upload/tutorial-8-5dbcc3c6-94c0-4b80-a27d-7c207da7b14a.jpg) ![](https://static.platzi.com/media/user_upload/tutorial-9-8eb237c7-d5d0-40b5-bf4f-7f8a2064680f.jpg)
**Pasos para insertar los métodos SETTER:** 1. Click derecho -> Generate ![](https://static.platzi.com/media/user_upload/SET1-b89a67a4-c49a-4a9c-81a6-bff9bb772087.jpg) 1. Seleccionar "Setter" ![](https://static.platzi.com/media/user_upload/SET-edb8a3bf-d944-4b46-8e79-a01b43027228.jpg) 1. Seleccionar los atributos a los que les queremos asignar un método SETTER y luego "OK" ![](https://static.platzi.com/media/user_upload/SET3-25c56ad4-953d-427c-919c-72cc4d5ba384.jpg) 1. Resultado: ![](https://static.platzi.com/media/user_upload/SET4-c9e2178a-6696-4d0c-a3a2-6fe373e6bd5d.jpg)
La enorme ventaja que nos proporcionan los getter y setters, es poder poner nuestras reglas para los valores de nuestros atributos desde la clase generadora.
Ayuda por favor, Aprete Ctrl + n pero no me salio la ventanita de Generate, ayuda por favor :(

Excelente explicacion.

VALIDAR EN SETTER SERIA DARLE 2 RESPONSABILIDADES A UN SOLO CODIGO.

el curso POO que dicen en el video ya lo quitaron, y no se poruqe. Platzi deberia ponerse mas serio con las rutas de aprendizaje pues afecta a sus estudiantes

con la actualizacion de java se, para entrar al generate el comando es alt+ insertar

“Si los métodos constructores se encargan de definir los parámetros obligatorios para que el objeto exista, los métodos get y set ayudarán a validar todo dato que se quiera asignar”.

En Java, los “get” y “set” son convenciones utilizadas para acceder a los campos o variables privadas de una clase. Estos métodos permiten obtener (get) o establecer (set) el valor de una variable desde fuera de la clase, manteniendo así el encapsulamiento y controlando el acceso a los datos internos de la clase.

¡Hola tú! Un curso ya con un par de años aquí en platzi, pero Anahí me motivó a crear una clase en la que valide el número telefonico, por lo que te dejo el código que realizará una validación con expresiones regulares:

package helpers;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ValidateRegex {
    public static boolean ValidatePhoneNumber(String phoneNumber) {
        Pattern pattern = Pattern.compile("\\d{10}");
        Matcher matcher = pattern.matcher(phoneNumber);
        if (matcher.matches()){
            return true;
        }
        else{
            return false;
        }
    }
}

Esto lo realicé de esta forma debido a que aquí validará que sean digitos y no letras, ejemplo, en el código de ejemplo de la profesora, también pasaría la validación con 8 veces la letra A (AAAAAAAA) y esto, definitivamente no es un número telefonico, así que la expresión regular puede ser útil, la forma en la que llamé esta clase quedó de la siguiente forma:

    public void setPhoneNumber(String phoneNumber) {
        boolean resultValidatePhone = ValidatePhoneNumber(phoneNumber);
        if (resultValidatePhone){
            this.phoneNumber = phoneNumber;
        }
        else{
            System.out.println("The phone number must have 10 numbers");
        }

    }

P.D.: Dejé 10 números, porque en Colombia son 10 dígitos 😅

¡Espero que te sea de ayuda!

Mejor explicado que en la Universidad, que grande Anahí!!

Esta maestra es una de las mejores, su forma de explicar me resulta tan fácil de entender

Para el manejo del tipo de sangre del paciente y las unidades físicas se pueden agregar enumeraciones.

Agregé dos propiedaes en la clase indicando las unidades de peso y las de altura de tipo enumeración PhysicUnit. En el constructor default se establece el estado de estas propiedades en metros y en kilogramos. El código es:

Cada propiedad tiene sus respectivos setters y getters y en el método que muestro lo información se usan para mostrar la info del paciente completa. Seguramente se puede mejorar.

public String setPhoneNumber(String phoneNumber) {
if (phoneNumber.length()>9){
System.out.println(“El numero que asignes debe ser de 9 digitos”);
}else if (phoneNumber.length()== 9){
this.phoneNumber = phoneNumber;

Los getters y setters se utilizan a menudo en combinación con la encapsulación en Java para controlar el acceso a los atributos de una clase y garantizar que sean utilizados de manera correcta. Además, permiten realizar validaciones y otras operaciones antes de establecer o obtener el valor de un atributo.

Sigo pensanso que cada curso, debe de tener 2 proyectos que el usuario debe de resolver con instrucciones de como debe de ser hacho. Uno a mitad del curso y otro al final. Esto ayuda a solidificar conocimiento.

Buenos días, existe una falla en la lógica de los ejemplos y es que esta clase debería funcionar 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, es decir validaciones o cualquier otra cosa, aunque en general las explicaciones son muy buenas.

Para los que usen el IDE Eclipse puede ir al “Source” de las viñetas o click derecho en la clase, entrar al “Source” y presionar “Generate Getters and Setters”.

  • 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.

Muy bien explicado

Encapsulamiento
Mecanismo de restricción en el nivel de acceso para atributos o métodos de la clase. En Java se usan los modificadores de clase.

para los que están en NetBeans, es con Alt + insert. sacar el menú Generate.

Me encanto escuchar el raaaak!! cuando escribio los numero del 1 al 9 😉 tambien hago lo mismo

Método constructor se encarga de definir los parámetros obligatorios para que nuestro Objeto exista VS Métodos Get & Set se encargan de validar todo dato que se quiera asignar.

Forma Manual y automática de crear Geeters and Setters

Un pequeño aporte en codigo a esta excelente clase:

    public void setPhoneNumber(String phoneNumber) {
        if (phoneNumber.length() != 8) {
            System.out.println("El numero telefonico de ser de 8 digitos");
        } else {
            this.phoneNumber = phoneNumber;
        }
    }

Excelente clase

Los getter/setters son parte del boilerplate code que se puede evitar con Lombok https://www.baeldung.com/intro-to-project-lombok

Un tip: No uses lombok o el generador de métodos de tu IDE si aún no has comprendido bien el tema de los setters y getters, no importa que tengas más código.

Los Getters y Setters son una mala practica, ya que utilizarlos demasiado quitaria la privacidad que queremos para el usuario, ya que si queremos tener esa información en privado no se podria porque todo el mundo mediante estos metodos tendria acceso a esta misma informacion

para los que no tienen IntelliJ IDEA pueden usar NetBeans y apara incertar los seters y geters se pude pulsado click derecho selecionan la opcion incert code y seters y geters y listo te los construye e inclusive tambien te construye los construcutores de las clases de forma automatica y tiene un plugin el cual por medio de diagramas UML convierte los diagramas a codigo

¿porque se tiene que imprimir el this.name? ¿no solo podríamos imprimir el name dentro del método getName?

los métodos Getters y Setters nos ayudan a tener un mejor control en la asignación de valores y recuperación de datos que forman parte de una clase.

Excelente Clase!!

Esta parte no la tenia muy clara, gracias por la explicacion.

tremenda clase, asi nuestra aplicacion sera realmente orientada a objetos y no un sancocho en donde reasigno el valor de la variable sin controlar su integridad

Get & Set son los métodos que se encargan de validar los parámetros, estos al mismo tiempo permite acceder a los atributos propios de la clase desde otra clase (i.e Main) 😉

Getters y Setters son métodos que se deben declarar públicos para mantener la consistencia de la clase y nos poder acceder a los atributos de la clase que son declarados privados.

Esta lección me pareció bastante informativa y muy importante

Los getter y setters puden ser generado con el IDE.

Gracias, excelente vídeo.

Excelente explicación de los Getters y Setters es genial para mantener integridad y hacer validaciones de los datos a modificar y obtener

Excelente, por medio de estos métodos no solo vamos a poder asignarle valores a las variables con modificadores de acceso private, sino que también podremos establecer ciertas reglas al momento de interactuar con estas variables.

Getters y Setters nos van a ayudar a validar y mantener la consistencia de la lógica de negocio en nuestros modelos “clases”.

Todo OK

A mi me gusto el proyecto de UBER 😃

sip ese curso lo vi 😃 Uber Ok

Muyyyy buena la clase , de diez

Muy bueno el curso de poo, se los recomiendo.

Muy util para evitar errores durante el desarrollo de un proyecto garantizamos la integridad de los datos.

Reglas de negocio = reglas de tu aplicación.
Lógica de negocio = lógica de tu aplicación.

¿Se podrá decir que los métodos getters y setters, no suelen seguir el cánon? para el caso del getWeight

click derecho, generate… getters and setters

Al principio me aparecía este error en el código.

La razón era porque se había importado (No sé en qué momento) lo siguiente:

import com.sun.org.apache.xpath.internal.operations.String;

Así que lo borré y funcionó.

mil graciassssssssssss ❤️

Si te sale el siguiente erro en un futuro o en este false cuando ejecutas el código y no muestra los resultados.

Debes ir a la clase paciente e implementar el método toString().
le das click derecho o (ctr + i) y toString().te va a genera unas lineas de código y con eso ya te mostrara los datos.


Clase 14: Getters y Setters

Para los que les apetezca tomar la clase en Eclipse iré subiendo mi código; hay pequeñas diferencias con Intellij, por no decir ninguna, pero con Eclipse se puede trabajar igual de bien. NOTA: Solo subiré la jerarquía y lo que haya sido modificado, tendrán los archivos no modificados en las clases anteriores.

Jerarquía del proyecto


Archivo: Patient.java; Métodos: Getters y Setters

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public String getPhoneNumber() {
		return phoneNumber;			
	}

	public void setPhoneNumber(String phoneNumber) {
		if (phoneNumber.length() > 8) {
			System.out.println("El número telefónico debe ser de 8 dígitos máximo");
		} else if (phoneNumber.length() == 8) {
			this.phoneNumber = phoneNumber;
		}
	}

	public String getBirthday() {
		return birthday;
	}

	public void setBirthday(String birthday) {
		this.birthday = birthday;
	}

	public String getWeight() {
		return this.weight + " kg";
	}

	public void setWeight(double weight) {
		this.weight = weight;
	}

	public String getHeight() {
		return this.height + " m";
	}

	public void setHeight(double height) {
		this.height = height;
	}

	public String getBlood() {
		return blood;
	}

	public void setBlood(String blood) {
		this.blood = blood;
	}


Archivo: Main.java, Método: main(String[])

public static void main(String[] args) {
		
		Doctor myDoctor = new Doctor("Anahí Salgado", "Pediatría");
		System.out.println(myDoctor.name);
		System.out.println(myDoctor.specialty);
		
		Patient patient = new Patient("Alejandra", "[email protected]");
		patient.setWeight(54.6);
		System.out.println(patient.getWeight());
		
		patient.setPhoneNumber("12345678");
		System.out.println(patient.getPhoneNumber());
	}

El método setter nos sirve para asignar un valor a un atributo de nuestra clase encapsulada y el método getter para retornar el valor del atributo que queramos.

No puedo creer que me quedar tan claro, Ann explica muy bien, tiene muchísima lógica, me arrepiento de no tomar este curso antes.