Autor
|
Tema: pasar un objeto a un objeto, es posible?? (Leído 7,398 veces)
|
kikian94
Desconectado
Mensajes: 66
|
hola, estoy haciendo un ejercicio de la uni en el que hay que dibujar una serie de rectangulos, tengo tres clases, vector, muro y el main: vector: private final int N; // length of the vector private double[] data; // array of vector's components /** * create the zero vector of length N * @param N Vector length. */ this.N = N; this.data = new double[N]; } /** * create a vector from either an array or a vararg list * this constructor uses Java's vararg syntax to support * a constructor that takes a variable number of arguments, such as * Vector x = new Vector(1.0, 2.0, 3.0, 4.0); * Vector y = new Vector(5.0, 2.0, 4.0, 1.0); * @param data Initial value of the vector. */ public Vector(double... data) { N = data.length; // defensive copy so that client can't alter our copy of data[] this.data = new double[N]; for (int i = 0; i < N; i++) this.data[i] = data[i]; } //*metodos*/
muro: public class Muro { public static final double NO_IMPACTO = 999.0; /** * Crea un muro. * * @param Vector - con las coordenadas del centro del muro. * @param Vector - con las dimensiones del muro (semianchura, semialtura). */ this.posicion = posicion; this.dimensiones = dimensiones;
main: import java.awt.*; public class Main { public static void main (String[] args ) { Muro muro[5]; int i; muro[0]= new Muro(0, .5, .005, .5); muro[1]= new Muro(.5, 1, .505, .005); muro[2]= new Muro(1, .5, .005, .5); muro[3]= new Muro(.5, .65, .005, .2); muro[4]= new Muro(.25, .1, .2, .005);
el caso es que necesito crear 5 muros al inicio del programa pero me dice eclipse que no le puedo pasar esos parametros, que en el constructor no estan declarados, pero si el constructor de muro tiene como parametros 2 vectores y estos a su vez tienen cada uno 2 valores por que no puedo meter 4 valores al constructor? como se le pueden pasar correctamente?
|
|
|
En línea
|
|
|
|
egyware
|
Como lo mencionas, los constructores no son Transitivos. No puedes asumir eso. Generalmente uno lo que hace en esos casos es sobrecargar el constructor, como por ejemplo: public Muro(double ax, double ay, double bx, double by) { }
Acá aparte que te hecho tu tarea (contra de las reglas) tienes que aprender dos cosas - Sobrecarga de funciones
- Constructores (fíjate en el this que hice, que fue llamar otro constructor de la misma clase)
Saludos
|
|
|
En línea
|
|
|
|
kikian94
Desconectado
Mensajes: 66
|
pero en la clase muro tengo que hacerla con el constructor que me dan es decir, que se le pasen 2 parametros, por que en vez de 2 variables un vector puede tener 3 y el constructor tendria que tener 6 parametros
|
|
|
En línea
|
|
|
|
egyware
|
Mi respuesta a tu pregunta ya está respondida. Fíjate bien el el "this", yo lo que hice fue hacer un constructor más cómodo. Sin embargo perfectamente podías hacer esto.
Observa los ejemplos, modificalos, aprende de ellos. Podrías haber experimentado y sacar conclusiones por ti mismo.
|
|
|
En línea
|
|
|
|
Mitsu
|
que se le pasen 2 parametros, por que en vez de 2 variables un vector puede tener 3 y el constructor tendria que tener 6 parametros
Si no tienes en mente un número de valores fijo que puede contener tus Vector, mejor primero guarda los valores que desees en una colección y luego se la pasas al Vector en el constructor de Muro. No te hagas problemas, se trata de pensar. // valores para el vector 1 Collection<Double> coleccion1 = new ArrayList<>(); coleccion1.add(0.5); coleccion1.add(7d); coleccion1.add(.35); // valores para el vector 2 Collection<Double> coleccion2 = new ArrayList<>(); coleccion2.add(0.8); coleccion2.add(4d); coleccion2.add(.65); Muro[] muro = new Muro[5]; muro[0] = new Muro( new Vector<Double>(coleccion1), new Vector<Double>(coleccion2) ); // el resto
|
|
|
En línea
|
|
|
|
kikian94
Desconectado
Mensajes: 66
|
Mi respuesta a tu pregunta ya está respondida. Fíjate bien el el "this", yo lo que hice fue hacer un constructor más cómodo. Sin embargo perfectamente podías hacer esto.
lo probe y perfecto amigo, muchas gracias, que rapidez a si es genial
|
|
|
En línea
|
|
|
|
kikian94
Desconectado
Mensajes: 66
|
quiero utilizar este metodo StdDraw.filledRectangle(double,double,double,double) y tengo que pasarle los 4 parametros definidos previamente en cada objeto muro, como lo hago? asi esta mal, ya que paso la referencia StdDraw.filledRectangle(muro);
|
|
|
En línea
|
|
|
|
egyware
|
quiero utilizar este metodo StdDraw.filledRectangle(double,double,double,double) y tengo que pasarle los 4 parametros definidos previamente en cada objeto muro, como lo hago? asi esta mal, ya que paso la referencia StdDraw.filledRectangle(muro);
Claro que está mal, debes acceder a las variables que contiene el muro. Se nota que tienes que estudiar más, estoy viendo que estás carente de varios conceptos. Pero es normal no todos nacimos sabiendo y a mi tomó mucho tiempo aprender bien java. Para empezar un objeto en java es la representación de un objeto real o virtual (una silla o el conocimiento de alguien). En tu caso estás representando un muro de solo 2D. El objeto muro tiene propiedades que representan las propiedades físicas del muro, como por ejemplo posición y dimensiones. Usaré este código para representar lo que digo. public class Muro { public Muro(int _x, int _y,int _w, int _h ) { x = _x; y = _y; w = _w; h = _h; } public int x; public int y; public int width; public int height; } Muro muro = new Muro(10,20,40,60);
Entonces como el objeto muro representa un muro, podemos aprovecharnos de esas propiedades, para obtener otras cosas como por ejemplo el área, cuanta pintura necesitar, colisiones, etc... Si deseamos hacer una representación visual (y utilizando el API de dibujado de java) debería hacer algo así. g.fillRect(muro.x, muro.y, muro.w, muro.h);
Si observas y viendo de una cierta manera Graphics y Muro no se conocen, sin embargo para poder lograr pintar una representación visual del muro tuve que pasarle las propiedades del Muro a Graphics para poder el se encargue de pintar finalmente. Espero que me hayas entendido y puedas aplicar lo que te intenté enseñar aquí para tu tarea, saludos. http://docs.oracle.com/javase/7/docs/api/java/awt/Graphics.html#fillRect(int, int, int, int)“Regala un pescado a un hombre y le darás alimento para un día, enséñale a pescar y lo alimentarás para el resto de su vida.”
|
|
« Última modificación: 12 Marzo 2014, 16:45 pm por egyware »
|
En línea
|
|
|
|
kikian94
Desconectado
Mensajes: 66
|
ya, si ya se que esta mal al pasarlo, pero lo que no me queda claro es como recorrer el array muro e ir accediendo a los 4 parametros de cada elemento, han sido declarados asi
que tengo que hacer refernecia al objeto muro y asu vez a vector?
|
|
|
En línea
|
|
|
|
egyware
|
Pero fíjate lo que hace el constructor. { this.posicion = posicion; this.dimensiones = dimensiones; }
Copia los dos vectores pasados como argumentos y los guarda en las propiedades correspondientes del objeto muro.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Como hacer que se cree un objeto a traves de otro objeto (¿se puede?)
« 1 2 »
.NET (C#, VB.NET, ASP)
|
Sin Nick xD
|
10
|
9,515
|
22 Marzo 2008, 06:18 am
por Sin Nick xD
|
|
|
Referencia a objeto no establecida como instancia de un objeto. Ayuda.
.NET (C#, VB.NET, ASP)
|
70N1
|
6
|
12,748
|
6 Agosto 2010, 22:48 pm
por raul338
|
|
|
Crear un objeto dentro de otro objeto
Programación Visual Basic
|
Tokes
|
7
|
7,149
|
30 Agosto 2010, 05:41 am
por BlackZeroX
|
|
|
Problema con objeto dentro de otro objeto
PHP
|
Skeletron
|
3
|
6,539
|
5 Enero 2011, 04:10 am
por Skeletron
|
|
|
POO - ¿Diferencia entre usar una constructora-copiadora a Objeto = Objeto?
« 1 2 »
Programación General
|
xaps
|
12
|
9,294
|
16 Noviembre 2013, 21:41 pm
por xaps
|
|