Please enable / Bitte aktiviere JavaScript!
Veuillez activer / Por favor activa el Javascript![ ? ]
Este foro usa cookies
Este foro usa cookies para almacenar tu sesión de inicio si estás registrado, y de tu última visita si no lo estás. Las Cookies son un pequeños documento de texto almacenado en tu PC; las cookies de este foro sólo pueden ser usadas en el mismo y no suponen ninguna amenaza para tu seguridad. Estas Cookies también anotan los hilos que has leído y cuándo lo has hecho. Por favor, confirma si aceptas o declinas el uso de estas cookies.

Una cookie será almacenada en tu navegador a pesar de tu decisión para prevenir que este mensaje te vuelva a aparecer. Podrás cambiar la configuración de las cookies en cualquier momento siguiendo el enlace de la parte inferior.

Calificación:
  • 4 voto(s) - 3 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Solución a la Práctica 5
#11
Tengo una duda, si alguien puede solucionarme la duda sería de gran ayuda.
En la Clase Vector, cuando te pide el tercer constructor:
public Vector (Punto a){
origen = new Punto (0,0);
extremo = a.clonar();
}

ese a.clonar() de qué sirve hay, no habría que poner la componente X y la Y, algo más o menos:
extremo = new Punto(a.getX(),a.getY()) // no se si e metido demasiado la pata pero es que no entiendo lo que hace el a.clonar hay
Responder
#12
(02-01-2013, 19:11)Antonio escribió:

[Para ver los enlaces debes registrate]

Tengo una duda, si alguien puede solucionarme la duda sería de gran ayuda.
En la Clase Vector, cuando te pide el tercer constructor:
public Vector (Punto a){
origen = new Punto (0,0);
extremo = a.clonar();
}

ese a.clonar() de qué sirve hay, no habría que poner la componente X y la Y, algo más o menos:
extremo = new Punto(a.getX(),a.getY()) // no se si e metido demasiado la pata pero es que no entiendo lo que hace el a.clonar hay

Verás Antonio...
Si te das cuenta, a.clonar() es exactamente lo mismo que new Punto(a.getX(),a.getY()).
El método clonar es un método de la clase punto que te devuelve una copia del punto invocador.
Fíjate en el método clonar de la clase Punto:
Código:
public Punto clonar (){
        return new Punto (x,y);
    }

Por lo tanto ambas respuestas son válidas, pero ya que tienes un método que te hace lo mismo lo utilizas y ya está. Es una buena manera de utilizar la programación basada en objetos.

Espero haberte ayudado Guiño
Responder
#13
Vaaale muchas gracias Jesús, ya está la duda solucionada muchas gracias Rolleyes
Responder
#14
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 Sonrisa
Responder
#15
(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 Sonrisa

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 Guiño
Responder
#16
Sí has ayudado, muchas gracias :D
El problema, era que en el constructor Vector sin argumentos lo había dejado tal cual, es decir: " public Vector(){} "
y había declarado, antes, como privadas: " origen = new Punto (), y extremo = new Punto (1,0) "
Pero al ponerlo como tú ya se ha solucionado.
Responder
#17
(04-01-2013, 14:55)Rosa escribió:

[Para ver los enlaces debes registrate]

Sí has ayudado, muchas gracias Gran sonrisa
El problema, era que en el constructor Vector sin argumentos lo había dejado tal cual, es decir: " public Vector(){} "
y había declarado, antes, como privadas: " origen = new Punto (), y extremo = new Punto (1,0) "
Pero al ponerlo como tú ya se ha solucionado.
Me alegro un montón porque me he tirado media hora escribiendo!! jajaja Gran sonrisa
Responder


Salto de foro:


Usuarios navegando en este tema: 3 invitado(s)