(04-01-2013, 14:06)Rosa escribió: [Para ver los enlaces debes registrate]
Tengo dos dudas de la práctica. La primera es de la clase Vector. No entiendo por qué cuando te pide un constructor que toma como argumentos dos objetos de la clase Punto, se pone:
origen=a.clonar();
extremo=b.clonar();
y en el anterior constructor también se pone extremo=a.clonar().
¿El a.clonar() en extremo y después en origen, es el mismo?
Tampoco sé si me he explicado muy bien...
Y la otra es que, en el método
public double getX(){
return origen.getX();
}
me aparece este error: "Cannot invoke getX() on the primitive type doble" Y no sé cómo arreglarlo.
Si alguien me ayuda
Bien Rosa, intentaré explicarme lo mejor que pueda.
En la clase vector hay varios constructores, es decir, que no compares unos con otros, porque en unos se emplean nombres que si los comparas con otros tienden a confusión. Es decir, a la pregunta "¿El a.clonar() en extremo y después en origen, es el mismo? ", la respuesta es no, no es el mismo, solo que los llamé de la misma manera. Con mas detalle:
En este constructor:
Código:
public Vector (Punto a){
origen = new Punto (0,0);
extremo = a.clonar();
}
Dice el enunciado que se introduce un punto como argumento que será el extremo del vector, por lo tanto se iguala al extremo, el porqué clonar ya lo he explicado en este foro, pero te lo repito. clonar() es un método de la clase punto que te devuelve una copia del punto en cuestión. En la práctica se dice que los vectores son inmutables, por lo tanto tienes que crear copias de todos los objetos que entran como argumento.
Existe otro constructor:
Código:
public Vector (Punto a, Punto b){
origen = a.clonar();
extremo = b.clonar();
}
Dice el enunciado que se introduce dos puntos (origen y extremo) como argumento. Que no te confunda el "a" de este constructor con el anterior, no tiene nada que ver. Se igualan origen y extremo a cada punto (clonado) por el mismo motivo que antes.
Bien, respecto a la otra duda...
El método está correcto, la causa del error pueden ser 2 cosas, que no hayas invocado bien el método o que el método de getX() de la clase punto no esté bien definido. Por tanto, mira si está llamando bien al metodo getX() desde el main. Un ejemplo:
Código:
public static void main(String[] args) {
Vector a = new Vector (new Punto(2,3), new Punto(4,5));
double x = a.getX();
System.out.println(x);
}
Esto te debería imprimir 2.0
Si te lanza error todo apunta a que no está bien definido el getX() de la clase punto que debería estar así:
Código:
public double getX(){
return x;
}
Bueno, espero haberte ayudado