[ Foro de Java ]
Hola Nacho, tengo una duda respecto a las clases y es que con frecuencia me estoy encontrando esta sintaxis:
public class Precio {
public double euros;
public double da() { return euros; }
public void pone(double x) { euros=x; }
}
Mi pregunta es, estarÃa bien esto?(ejemplo de abajo) si sà está bien, ¿tiene más ventaja usar el ejemplo de arriba o el que pongo yo abajo, o da igual?
public class Precio{
public double euros;
public double daPone(double x){
euros = x;
return euros;
}
}
Gracias Nacho
Lo de "da" y "pone" me parece una traducción rara. A mí me resulta más natural usar las palbras inglesas originales "get" y "set" o en todo caso una traducción más detallada, como "leerValor" y "cambiarValor".
Volviendo a tu pregunta: lo razonable es que sean dos funciones distintas, porque:
1) habrá veces que quieras cambiar el valor de la variable y no te interese leer su valor
2) más crítico: no siempre que quieras leer su valor tendrás interés en cambiarlo (y cuando si lo cambias sin saber el valor anterior... lo perderás)
3) en tu caso, ni siquiera lees el valor que tenía inicialmente la variable, porque la modificas antes de devolver su valor. Si te fuera vital crear una función que leyera y modificara a la vez, al menos sería algo como:
public double daPone(double x){
double valorAnterior = euros;
euros = x;
return valorAnterior;
}
Una nota final IMPORTANTE: en todos los casos, el crear un "get" y un "set" tiene sentido si ocultas las variables, para que los detalles internos de tu clase no sean accesibles desde fuera:
private double euros;
Si el atributo "euros" es público (que no se recomienda), no hace falta un "get" ni un "set".
Muchas gracias Nacho, ahora si me ha quedado claro.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)