Si, bueno java no tiene tipos unsigned pero usar el tipo unsigned tiene
muchos problemitas si no los sabes usar y eso no te valida que el numero que
le pases como parametro a tu metodo o le asignes a tu atributo lo ignore.
Toma por ejemplo C++ que SI tiene unsigned int y hace poco en un trabajo
practico de la facultad tuve un problema similar....

Estaba usando una variable unsigned int y le asugnava una variable que tenia
0 y le restaba uno (Sin darme cuenta que la variable estaba en 0 antes de
restarle 1) y por ende, la variable no pasba a tener -1 sino 2 elevado a la
37 o algo similar que no es lo que yo queria....

Esta bien ese es un bug mio, y un error conceptual mio, pero tener un tipo
de dato unsigned no hace que no te deje meter un valor negativo sino que te
acepte un valor negativo pero lo interpreta como positivo, que hay una gran
diferencia, los tipos de datos se usan para interpretar un dato, los
conjuntos de bits pueden ser iguales pero representados en distintos
formatos se interpretan diferente, el tema que propuse yo con un getter /
setter y el valor negativo no es cuestion de definir la variable como
unsigned int, sino validar que si me llega un valor negativo, ignorarlo.

Saludos
Pablo

2008/4/24, Ricardo Markiewicz <[EMAIL PROTECTED]>:
>
> 2008/4/24 Pablo Martín Viva <[EMAIL PROTECTED]>:
> > 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:
> >
> > 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
>
> Bueno, aca tenes otro problema, estas usando un lenguaje que no tiene
> tipos unsingned :), si tuvieras, no necesitas validar.
>
> > 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
>
> Con properties tenes lo mismo, pero mas lindo (C#, para que se vea
> casi igual de feo que tu ejemplo :) :
>
> public class Libro {
>    private int copias;
>
>    public int Copias {
>       set {
>           if (value < 0) {
>              this.copias = 0;
>           } else {
>              this.copias = value
>           }
>       }
>       get { this.copias }
>    }
>
>    public Libro(int copias) {
>          Copias = copias;
>   }
> }
>
> libro = new Libro(25);
> libro.Copias++;   (esto no lo podes hacer con setters :P)
>
> > 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...
>
> En ambos casos, pero nota que tngo mas flexibilidad (tengo el ++, por
> decir algo) y naturalidad (se lee mas lindo "libros.copias" que
> "libros.getCopias" al usar despues los atributos).
>
> > 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.
>
> Lo mismo con properties.
>
> --
>
> --
> ¡Falta Uno! - http://www.falta-uno.com.ar/
> Ricardo Markiewicz
>
> _______________________________________________
> 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

Responder a