26
Que mier.. es un get y set!!! Hecha por un tipo harto de escuchar conversaciones que envuelven estudiante de progra1 confundidos por sus maestros.

Metodos Get y Set, finalmente revelados

Embed Size (px)

DESCRIPTION

Una presentacion no formal que captura la frustracion de un estudiante nuevo a Java y responde a todas sus preguntas. Nota: Me disculpo por el lenguaje utilizado en el texto. Era joven ;)

Citation preview

Page 1: Metodos Get y Set, finalmente revelados

Que mier.. es un get y set!!!Hecha por un tipo harto de escuchar conversaciones que envuelven estudiante de progra1 confundidos por sus maestros.

Page 2: Metodos Get y Set, finalmente revelados

Para entender que es un get y set, hay que entender primero que es un metodo. Una vez entendido eso, la pregunta inicial parecerá estúpida y en el mejor de los casos estarás avergonzado de haberte hecho la pregunta en cuestion.

Se espera que luego de ver esta presentacion puedas hacer esto con tu compañeros:

Page 3: Metodos Get y Set, finalmente revelados

Metodos

Un metodo es algo que hacen los objetos y ya.

Pueden recibir “parámetros” o no, dependiendo de lo que se necesita hacer.

Page 4: Metodos Get y Set, finalmente revelados

Pero que pu.. es un parámetro?Un parametro es informacion adicional que se necesita para que un objeto realice un tarea. Por ejemplo:

Supongamos que soy una calculadora (de las caras :D ) y me pedís: “Sumale algo a 4 y me decís cuanto es”. Yo no soy un maldito adivino y no puedo saber cuánto debo sumarle, eso que necesito para realizar mi tarea se llama PARAMETRO.

La instrucción correcta debe ser: “Sumale 20 a 4 y me decis cuanto es”.

Yo he definido mi metodo sumar como: la suma de 4 más lo que sea que me den de parámetro. Algo así:Public Int sumar(int cuanto){

return cuanto + 4;}

Page 5: Metodos Get y Set, finalmente revelados

Metodos que devuelven algo y metodos que NO

• Algunas veces se necesita saber que rayos hizo el metodo para poder usarlo en algun calculo.

Si un metodo no devolverá NADA su tipo de retorno será VOID, void es algo así como NI MIER..

Page 6: Metodos Get y Set, finalmente revelados

Ejemplo

• Considerese el siguiente metodo:

public void raiz(int x){• double algo = Math.sqrt(x);• }

Page 7: Metodos Get y Set, finalmente revelados

El anterior metodo NO puede usarse en algun calculo como: 8 + raiz(10), porque su tipo de retorno es VOID. Cualquier intento de retornar algo en un metodo void, resulta en un compilador frustrado que se negará a generar bytecode. Como lo siguiente:

bla bla void metodo(){ return algo;}

Page 8: Metodos Get y Set, finalmente revelados

Y para que rayos usamos los metodos void?

• Para que un objeto haga algo y ya, no importandonos que fue lo que hizo. Considerese la siguiente conversacion entre dos objetos:

• A: mae movete cinco pasos porfa.B: ok.A: y?B: Y que? Mover es void.A: no me dijiste si lo hiciste o no.• B: no fue lo que me pediste.

Page 9: Metodos Get y Set, finalmente revelados

Explicacion cientifica

El objeto B tiene definido su metodo mover asi:public void mover(int pasos){ miPosicion += 5;}El objeto A sos vos un programador chiflado que escribio todo el codigo de B y que no se acuerda de como lo hizo.

Page 10: Metodos Get y Set, finalmente revelados

Que hago para que B me diga si hizo lo que le pedí o no?

Debe definirse el metodo mover() así:public boolean mover(int pasos){ miPosicion += pasos; Return true;}

Page 11: Metodos Get y Set, finalmente revelados

Con el anterior metodo la conversacion siguiente finaliza con todos felices:

A: mae movete cinco pasos porfa.B: ok. Si lo hice.A: ok! ^_^

Page 12: Metodos Get y Set, finalmente revelados

Y como me devolvería false? Te estarás preguntanto. Pues como está el metodo escrito, jamás devolverá false.

Page 13: Metodos Get y Set, finalmente revelados

METODOS GET

Page 14: Metodos Get y Set, finalmente revelados

• A un metodo se le puede dar el nombre que a uno se le antoje al momento de crearlo. Algunas veces tenemos atributos PRIVADOS en una clase y queremos que se puedan usar afuera de ella cuando se ocupen. No podemos invocarlo por el poder de greiscol así:objeto.atributo. Porque el atributo es PRIVADO!Para solucionar eso, creamos un metodo que devuelva el atributo.

Page 15: Metodos Get y Set, finalmente revelados

• Programadores sensatos usualmente nombran a estos metodos así:verboIndicandoObtencion + nombreAtributo

Dado un atributo X en una clase cualquiera, un metodo para devolver ese valor podría llamarse:obtenerEquis();

Pero pudo haberse llamado de cualquier forma. Algunos programadores spanglishistas nombran esos metodos así:verbIndicatingGet + nombreAtributo

• Nuestro metodo anterior se habría llamado:getEquis()• Si un programador spanglish lo hubiera hecho

Page 16: Metodos Get y Set, finalmente revelados

Puedo tener un get que se void?

• Claro que puedes, deberas depues atenerte a las consecuencias de tener un metodo void, no poder usarlo en calculos y NO poder asignarselo a una variable.

Page 17: Metodos Get y Set, finalmente revelados

Si tengo un atributo privado que es un arreglo de String, como uso sus elementos afuera de la clase?

• Paso 1. Planear el metodo.Segun el problema se necesita devolver los elementos individuales del arreglo NO el arreglo. Entonces algo como:Public String[] getArreglo(){ return this.arreglo;}Seria tan util como un control inalambrico sin baterias.

Page 18: Metodos Get y Set, finalmente revelados

Rapidamente podemos darnos cuenta de que para sacar un elmento del arreglo necesitamos informacion adicional. Un parámetro. Ese parámetro es el índice.

Paso 2. Escribir el metodo.Public String getElementoEnPosicion(int indice){ return this.arreglo[indice];}

El nombre aqui es muy largo pero ilustra lo que se quiere hacer. En la vida real el perro de la derecha se burlaría despiadadamente de vos si le pones ese nombre.

Page 19: Metodos Get y Set, finalmente revelados

METODOS SET

Page 20: Metodos Get y Set, finalmente revelados

• Siguiendo con la situacion de tener un atributo privado X, si se necesita cambiar ese valor desde afuera no podemos hacer algo así:• objeto.atributoX = algo;• Porque el atributo es PRIVADO.• Para solucionar eso creamos un metodo que me permita

cambiar ese valor desde adentro del objeto.

Page 21: Metodos Get y Set, finalmente revelados

• Programadores sensatos, usualmente nombran a estos metodos así:verboIndicandoModificacion + nombreAtributo• Asi que nuestro metodo para cambiar el valor de X se llamaría

así:establecerEquis()• Y si es spanglish:

setEquis()• Y si es ingles puro:

setX();

Page 22: Metodos Get y Set, finalmente revelados

• Puedo tener un metodo Set que devuelva algo?• Por supuesto que sí. Puedes definir tus metodos como se te

venga a la mente en el momento.Sin embargo, usualmente los metodos que cambian el valor de un atributo, sólo lo hacen y ya.Al hacer que devuelva algo, te arriesgas a que programadores inexpertos, hagan lo que el perro de la esquina.

Page 23: Metodos Get y Set, finalmente revelados

• Los metodos set generalmente necesitan de un parámetro para realizar su tarea. Considerese la siguiente conversacion:A: oye B, cambia el valor de tu atributo X.B: ok! ..un momento, pero, a qué valor? Que hago Dios mio! Ahhhhh!!!• En la situacion anterior se observa que el programador quiere

cambiar el valor de X de B, pero no le dice el nuevo valor.

Page 24: Metodos Get y Set, finalmente revelados

• Paso 1. Pensar el metodoSe necesita un parametro, ese parametro será el nuevo valor para X.• Paso2. Escribir el metodo

Public void setX(Tipo valor){ this.X = valor;}

Page 25: Metodos Get y Set, finalmente revelados

• En que caso puedo tener un establecer si parametros?• En caso de que el nuevo valor este cambiando en otro lado.

Por ejemplo:Public void setX(){ this.X = Y + 8;}Si resulta que ‘Y’ siempre es igual el perro de la esquina se sentirá muy feliz.

Page 26: Metodos Get y Set, finalmente revelados

• Si yo se que esperabas al mismo perro otra vez :D