elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  pasar un objeto a un objeto, es posible??
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: pasar un objeto a un objeto, es posible??  (Leído 6,745 veces)
kikian94

Desconectado Desconectado

Mensajes: 66


Ver Perfil
pasar un objeto a un objeto, es posible??
« en: 11 Marzo 2014, 11:52 am »

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:
Código
  1. public class Vector {
  2.  
  3.    private final int N;         // length of the vector
  4.    private double[] data;       // array of vector's components
  5.  
  6.    /**
  7.      * create the zero vector of length N
  8.      * @param N Vector length.
  9.      */
  10.    public Vector(int N) {
  11.        this.N = N;
  12.        this.data = new double[N];
  13.    }
  14.  
  15.    /**
  16.      * create a vector from either an array or a vararg list
  17.      * this constructor uses Java's vararg syntax to support
  18.      * a constructor that takes a variable number of arguments, such as
  19.      * Vector x = new Vector(1.0, 2.0, 3.0, 4.0);
  20.      * Vector y = new Vector(5.0, 2.0, 4.0, 1.0);
  21.      * @param data Initial value of the vector.
  22.      */
  23.    public Vector(double... data) {
  24.        N = data.length;
  25.  
  26.        // defensive copy so that client can't alter our copy of data[]
  27.        this.data = new double[N];
  28.        for (int i = 0; i < N; i++)
  29.            this.data[i] = data[i];
  30.    }
  31. //*metodos*/
  32.  

muro:
Código
  1. public class Muro {
  2.  
  3.  
  4. public static final double NO_IMPACTO = 999.0;
  5. protected Vector posicion;
  6. private Vector dimensiones;
  7.  
  8. /**
  9. * Crea un muro.
  10. *
  11. * @param Vector - con las coordenadas del centro del muro.
  12. * @param Vector - con las dimensiones del muro (semianchura, semialtura).
  13. */
  14. public Muro(Vector posicion,Vector dimensiones){
  15. this.posicion = posicion;
  16. this.dimensiones = dimensiones;

main:

Código
  1. import java.awt.*;
  2. public class Main {
  3.  
  4. public static void main(String[] args) {
  5.  
  6.  
  7. Muro muro[5];
  8. int i;
  9. muro[0]= new Muro(0, .5, .005, .5);
  10. muro[1]= new Muro(.5, 1, .505, .005);
  11. muro[2]= new Muro(1, .5, .005, .5);
  12. muro[3]= new Muro(.5, .65, .005, .2);
  13. 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


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: pasar un objeto a un objeto, es posible??
« Respuesta #1 en: 11 Marzo 2014, 13:13 pm »

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:
Código
  1. public Muro(double ax, double ay, double bx, double by)
  2. {
  3.   this(new Vector(ax, ay), new Vector(bx, dy));
  4. }
  5.  

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 Desconectado

Mensajes: 66


Ver Perfil
Re: pasar un objeto a un objeto, es posible??
« Respuesta #2 en: 11 Marzo 2014, 15:32 pm »

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


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: pasar un objeto a un objeto, es posible??
« Respuesta #3 en: 11 Marzo 2014, 15:41 pm »

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.

Código
  1. new Muro(new Vector(0, .5), new Vector(.005, .5));
  2.  

Citar
Observa los ejemplos, modificalos, aprende de ellos. Podrías haber experimentado y sacar conclusiones por ti mismo.
En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: pasar un objeto a un objeto, es posible??
« Respuesta #4 en: 11 Marzo 2014, 16:22 pm »

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.

Código
  1. // valores para el vector 1
  2. Collection<Double> coleccion1 = new ArrayList<>();
  3. coleccion1.add(0.5);
  4. coleccion1.add(7d);
  5. coleccion1.add(.35);
  6. // valores para el vector 2
  7. Collection<Double> coleccion2 = new ArrayList<>();
  8. coleccion2.add(0.8);
  9. coleccion2.add(4d);
  10. coleccion2.add(.65);
  11.  
  12.                Muro[] muro = new Muro[5];
  13.                muro[0] = new Muro( new Vector<Double>(coleccion1), new Vector<Double>(coleccion2) );
  14.                // el resto
En línea

kikian94

Desconectado Desconectado

Mensajes: 66


Ver Perfil
Re: pasar un objeto a un objeto, es posible??
« Respuesta #5 en: 11 Marzo 2014, 18:41 pm »

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.

Código
  1. new Muro(new Vector(0, .5), new Vector(.005, .5));
  2.  

lo probe y perfecto amigo, muchas gracias, que rapidez a si es genial :)
En línea

kikian94

Desconectado Desconectado

Mensajes: 66


Ver Perfil
Re: pasar un objeto a un objeto, es posible??
« Respuesta #6 en: 12 Marzo 2014, 13:28 pm »

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


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: pasar un objeto a un objeto, es posible??
« Respuesta #7 en: 12 Marzo 2014, 13:45 pm »

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.
Código
  1. public class Muro
  2. {
  3. public Muro(int _x, int _y,int _w, int _h )
  4. {
  5. x = _x;
  6. y = _y;
  7. w = _w;
  8. h = _h;
  9. }
  10. public int x;
  11. public int y;
  12. public int width;
  13. public int height;
  14. }
  15. Muro muro = new Muro(10,20,40,60);
  16.  

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

Código
  1. Graphics g = getGraphics();
  2. g.fillRect(muro.x, muro.y, muro.w, muro.h);
  3.  
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)

Citar
“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 Desconectado

Mensajes: 66


Ver Perfil
Re: pasar un objeto a un objeto, es posible??
« Respuesta #8 en: 12 Marzo 2014, 15:11 pm »

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
Código
  1. new Muro(new Vector(0, .5),new Vector(.005, .5))
que tengo que hacer refernecia al objeto muro y asu vez a vector?
En línea

egyware


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: pasar un objeto a un objeto, es posible??
« Respuesta #9 en: 12 Marzo 2014, 15:18 pm »

Pero fíjate lo que hace el constructor.

Código
  1. public Muro(Vector posicion,Vector dimensiones)
  2. {
  3. this.posicion = posicion;
  4. this.dimensiones = dimensiones;
  5. }
  6.  

Copia los dos vectores pasados como argumentos y los guarda en las propiedades correspondientes del objeto muro.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines