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 69

Preguntas 15

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

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”

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

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.

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

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

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

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

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



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

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

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

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

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

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.

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

Como puedo entrar a ver encapsula miento mas a detalle?

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

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

mil graciassssssssssss ❤️

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

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.

muy útil los comandos

Getters y Setters

Los métodos Getters y Setters permiten leer y escribir respectivamente, loas valores de las variables de la clase, ya que estas al estar encapsulados no pueden ser accedidas directamente se hace mediante estos métodos. Estos métodos pueden acceder a los datos porque forman parte de la misma clase que estos.

Cada variable debe tener su propio método Getter y Setter.

Por convención los nombre de estos métodos siempre comienzan con get o set más el nombre de la variable para el que están hechos y deben ser públicos.

<h4>Setter</h4>
public void setWeight(double weight){
		this.weight = weight;
}

Este método no retorna ningún valor y recibe el nuevo valor que será asignado. Dentro del método se accede a la variable de la clase con this weight y se le asigna el valor que recibió el método.

<h4>Getter</h4>
public double getWeight(){
		return this.weight
}

El método get simplemente regresa el valor de la variable para el que está hecho.

En este caso, queremos darle un formato a lo que nos va a regresar cuando solicitemos la variable weight para que nos diga que son kg. Para esto en lugar de retornar un double, va a retornar un string:

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

Esto debe hacerse desde la clase donde están las variables, las reglas del negocios no deben establecerse fuera de la clase.


Los métodos get y set se encargan de validar los parámetros que se quieran asignar a una instancia de la clase.

Por ejemplo, podemos verificar que el número de teléfono tenga máximo ocho dígitos de la siguiente manera, si no se cumple la condición mostrará un mensaje:

public void setPhoneNumber(String phoneNumber) {
    if(phoneNumber.length() > 8){
				System.out.println("El número no puede tener más de 8 digitos");
    }
    this.phoneNumber = phoneNumber;
}

Dependiendo de las reglas del negocio se pueden hacer diferente validaciones.

Estupenda clase, los métodos me recuerdan al get y al set de rest en su funcionamiento, tambien se pude agregar un if else indicando s el numero telefónico es menor a 8 dígitos e imprimir el mensaje.

For Vim lovers:

If the constructor method is in charged of defining mandatory params for an instance of an object to exist, then setter method are for changing those values and/or adding extra ones, and because of that, getter methods will be useful for getting the values.

In Intellij, for instance, if you press Alt+ins, you will get all the setters and getters of the private vars, in vim we can get the same behavior with a little plugin called vim-java-get-set:

  1. Install it on your .vimrc using plug: Plug 'Dinduks/vim-java-get-set'

  2. Read their vim page to know what commands can you execute

    1. Remap them if you want:
    "setters and getters in java
    "the first two are the same
    map <leader>sg :InsertBothGetterSetter<CR>
    map <leader>gs :InsertBothGetterSetter<CR>
    map <leader>se :InsertSetterOnly<CR>
    map <leader>ge :InsertGetterOnly<CR>
    
  3. Use it by positioning before the private keyword on a var and execute any of the commands:

Example using the remaps in the step 2.1 (I typed \se and \ge while on normal mode):

<h4>References:</h4>

Comparto el nombre de esta libreria que se llama lombok, enserio es genial para reducir código, recomendada 😄

yo puse en el setPhoneNumber que solo acepte valores de 10 digitos por que donde vivo para marcar ha yqeu escribir 10 dijitos

public void setPhoneNumber(String phoneNumber) {
        if (phoneNumber.length() != 10 ){
            System.out.println("el numero telefonico debe de ser de 10 digitos");
        }else if(phoneNumber.length() == 10){
            System.out.println("el nuemro tiene 10 digitos");
            this.phoneNumber = phoneNumber;

        }

    }```