En cuanto a la parte de validar no hablaba para suplantar un framework de
validación porque eso es imposible, de hacerlo en la clase misma, no se si
imposible, tal vez exagere, pero es muy antinatural, antipractico y termina
no sirviendo, a lo que me referia es por ejemplo si yo tengo no se algo por
el siguiente estilo:
public class Libro {
private int copias;
public Libro(int copias) {
setCopias(copias);
}
public void setCopias(int copias) {
if (copias < 0) {
this.copias = 0;
} else {
this.copias = copias;
}
public int getCopias() {
return this.copias;
}
}
En ese caso estoy haciendo una validación de que no me pasen un valor
negativo de copias ya que un libro no puede tener una cantidad de cpias
negativas, para lo que quiero modelar, entonces en esos casos tomo un valor
por defecto, ademas esas validaciones no las tengo que repetir en todos
lados, por ejemplo cada vez que cambio el valor de mi atributo copia, ya sea
en los multiples constructores que mi clase pueda tener, como en los
diferentes metodos que usen mi atributo, yo me cercioro de que la cantidad
de copias nunca va a ser negativa, esto es un ejemplo simple. Otro tipo de
validaciones pueden ser para hacer lazy loading de atributos...
Por ejemplo si yo tengo algo asi como:
public class Libro {
private List<Capitulo> listaCapitulos;
public Libro() {
}
public List<Capitulos> getCapitulos() {
if (listaCapitulos == null) {
listaCapitulos = new ArrayList<Capitulos>();
}
return listaCapitulos;
}
Entonces desde cualquier lugar que use a la lista de capitulos dentro de mi
clase me olvido si originalmente estaba en null o no, y con eso me evito
montones de NullPointerExceptions, son ejemplos medio tontos estos, y hasta
casi no justifican el uso de los getters y setters pero bueno tomando esto
como base se pueden hacer cosas mas complejas.
Saludos
Pablo
El día 24/04/08, Gonzalo Merayo <[EMAIL PROTECTED]> escribió:
>
> 2008/4/23 Pablo Martín Viva <[EMAIL PROTECTED]>:
> > Yo no veo que el hecho de tener getters y setters por todos lados sea
> malo,
> > sino que ademàs a los getters y setters hay que darle su debida
> visibildad
> > sino no sirve. A mi me gusta para ser mas organizado con mi codigo poner
> > getters y setters de todo por 2 razones, en los getters puedo tener
> > validaciòn adicional para vlidar que el dato al que voy a acceder es
> valido
> > o esta inicializado o lo que fuera y segundo que me abstrae desde mi
> propio
> > codigo la representación interna que uso de mi atributo... Obviamente
> que no
> > todos los getters y setters los voy a dejar publicos, sino perderia la
> > absttracción, pero puedo dejarlos privados o protegidos para que clases
> > derivadas puedan accederlos si es necesario y no esten modificando datos
> de
> > forma arbitraria...
>
> Pablo,
> Me intriga la parte de validar...por que todos los setters que
> conozco que validan tiran excepciones, lo que termina en un barullo de
> catch para ponerle un mensajito al usuario "La direccion de mail debe
> tener un @". Admito que a veces es comodo cuando no queres implementar
> un mecanismo de validaciones sofisticado...pero en general el codigo
> resultante de hacer esto es bastante malo.
> ¿Como sugeris usarlo?
>
> A todos los que no saben de que se esta hablando y no los detiene de
> responder:
> Cuando dicen que el lenguaje no tiene getter y setter quieren decir
> que en lugar de llamar al setter como o.setA(5) se lo llama o.A= 5
> NO SIGNIFICA QUE NO HAYA UN METODO PROGRAMADO DETRAS (si fuese
> necesario cambiar su comportamiento)
>
> Saludos
>
> _______________________________________________
> Lista de correo Programacion.
> [email protected]
> http://listas.fi.uba.ar/mailman/listinfo/programacion
>
--
Si yo tengo una manzana y tú tienes una manzana, luego de intercambiarlas
ambos tenemos una manzana. Si yo tengo una idea y tú tienes una idea, luego
de intercambiarlas ambos tenemos dos ideas.
Apoyando a la comunidad Open Source.
Facebook prifile:
http://www.facebook.com/profile.php?id=1244601012
Orkut prifile:
http://www.orkut.com/Profile.aspx?uid=12594853021246287134
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion