Solución a la Práctica 5 - Versión para impresión +- Foro no oficial de la UPCT (https://foroupct.es) +-- Foro: 1º GIT (https://foroupct.es/Forum-1%C2%BA-GIT) +--- Foro: Fundamentos de Programación (https://foroupct.es/Forum-Fundamentos-de-Programaci%C3%B3n) +--- Tema: Solución a la Práctica 5 (/Thread-Soluci%C3%B3n-a-la-Pr%C3%A1ctica-5) Páginas:
1
2
|
RE: Solución a la Práctica 5 - Antonio - 02-01-2013 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 RE: Solución a la Práctica 5 - Jesús Hernández Galián - 02-01-2013 (02-01-2013, 19:11)Antonio escribió: 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 (){ 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 RE: Solución a la Práctica 5 - Antonio - 02-01-2013 Vaaale muchas gracias Jesús, ya está la duda solucionada muchas gracias RE: Solución a la Práctica 5 - Rosa - 04-01-2013 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 RE: Solución a la Práctica 5 - Jesús Hernández Galián - 04-01-2013 (04-01-2013, 14:06)Rosa escribió: 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){ Existe otro constructor: Código: public Vector (Punto a, Punto b){ 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) { 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(){ Bueno, espero haberte ayudado RE: Solución a la Práctica 5 - Rosa - 04-01-2013 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. RE: Solución a la Práctica 5 - Jesús Hernández Galián - 04-01-2013 (04-01-2013, 14:55)Rosa escribió:Me alegro un montón porque me he tirado media hora escribiendo!! jajaja |