lunes, 14 de enero de 2008

por que usar metodos GET y SET???

Como hemos visto en clase, parece ser que lo mas conveniente es que los atributos de una clase esten definidos como private y los metodos esten definidos como public... Pero por que?

veamos el desarrollo de un ejemplo desde dos puntos de vista distintos:

1.- usando una clase ya definida


bien, supongamos que, entre las clases que ofrece java, tenemos una que se llama fraccion (que ocurrente, verdad?). No sabemos que hace por dentro, pero de una cosa estamos seguros: tiene tres metodos:

int getDenominador(): no sabemos que hace, pero nos devuelve un int
void setDenominador(int valor): no sabemos lo que hace
void mostrar(): nos muestra en la pantalla algo parecido a esto: "X / Y = Z"

bueno, pues en nuestro programa, en un momento determinado, ponemos:

Fraccion primera = new Fraccion();
primera.setDenominador(10);
primera.mostrar();

y al ejecutar nuestro programa, aparece:
"20 / 10 = 2"

vamos a intentar "estropear" la clase fraccion... hacemos lo siguiente:

Fraccion primera = new Fraccion();
primera.setDenominador(0);
primera.mostrar();

y al ejecutar nuestro programa...

ArithmeticException...

hemos averiguado algo: el metodo setDenominador() nos deja meter un valor 0. Esto es porque en el metodo SET no comprobamos el valor introducido.

Una utilidad muy importante es, por tanto, utilizar metodos SET para asignar valores.

2.-definiendo nosotros la clase


una forma de definir el metodo setDenominador:

public void setDenominador(int valor){
this.denominador = 1;
if(valor!=0)
this.denominador=valor;
}

Una forma de definir el metodo getDenominador:

public int getDenominador(){
if(this.denominador !=0)
return this.denominador;
else
return 1;
}


y por ultimo, la definicion del metodo mostrar:

public void mostrar(){
System.out.println(this.numerador + " / "+ this.denominador + "= ");
System.out.println(this.numerador/this.denominador);
}


bien. Supongamos que hemos definido el atributo denominador como public. Si algun listillo hace:

Fraccion primera = new Fraccion();
primera.denominador = 0;
primera.mostrar();

la segunda linea del metodo mostrar() va a hacer una division entre 0!!! y nos da la excepcion de division entre 0.

COMO MEJORAR el metodo mostrar()


de la siguiente manera:

public void mostrar(){
System.out.println(this.getNumerador() + " / "+ this.getDenominador() + "= ");
System.out.println(this.getNumerador()/this.getDenominador());
}

o lo que es lo mismo, la comprobacion del get y del Set la utilizamos nosotros mismos y "cubrimos" un problema de posible mala asignacion.

martes, 8 de enero de 2008

VUELTA AL COLE!!! (digooooo... al curso :D )

HOLA DE NUEVO!!!

volvemos a las andanzas, una vez mas, llenos de ilusion, cariño, amor, amistad, wii, nds... (bueno, los dos ultimos, seguro que solo aquellos felices afortunados...:D )

Espero que este año aprendamos todos un poco mas... Y QUE ESTO SE MUEVA!!!

venga un abrazo a todos... NOS VEMOS!!!