[ Foro de Java ]

Clases

08-Aug-2011 10:26
David Nuñez
2 Respuestas

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


08-Aug-2011 12:06
Nacho Cabanes (+84)

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".


08-Aug-2011 14:14
David Nuñez

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.)