elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
27 Mayo 2012, 23:39  


Tema destacado: Recuperar cuenta de Google, GMail, Youtube

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  Problema con clase
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con clase  (Leído 463 veces)
Lain0x

Desconectado Desconectado

Mensajes: 34


Ver Perfil
Problema con clase
« en: 20 Noviembre 2011, 18:44 »

Hola, resulta que tengo una clase de nombre: Punto. Contiene un método que calcula distancia, pero el problema es que recibe un parámetro de tipo Punto.
Es un problema, porque ahora estoy haciendo una clase gráfica. La clase gráfica tiene un TextField que recibe a la variable tipo Punto, por medio de un evento de botón.

La clase Punto es esta:

Código:
public class Punto {
    private double x, y;
   
    public Punto(double x, double y)
    {
        this.x = x;
        this.y = y;
    }
   
    public Punto()
    {
        this.x = 0.0;
        this.y = 0.0;
    }
   
    public double getX()
    {
        return x;
    }
   
    public double getY()
    {
        return y;
    }
   
    public double calcularDistanciaDesde(Punto p)
    {
        double x1, y1;
        x1 = x - p.getX();
        y1 = y - p.getY();
        return Math.sqrt((x1*x1)+(y1*y1));
    }
   
}

Y el metodo ActionPerformed de la clase gráfica es este:

Código:
public void ActionPerformed(ActionEvent e){
Punto p1 = new Punto();
t1.setText(p1.calcularDistanciaDesde(p1));
}

No entiendo a la perfección la función de una variable tipo Punto. Se que permite llamar a funciones. Pero una vez que la paso como parámetro se supone que no toma un valor numérico.
Me podrían explicar o aclarar un poco?

Gracias.



En línea
RyogiShiki


Desconectado Desconectado

Mensajes: 708


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Problema con clase
« Respuesta #1 en: 20 Noviembre 2011, 19:01 »

Hola.

Bueno a ver, no se bien lo que no entiendes, pero esto es lo que veo:

Tienes una clase llamada Punto que abstrae el concepto de punto. La clase tiene 2 Contructores, un constructor sin parámetros que inicializa los atributos de Punto a 0.0 y El otro recibe dos parámetros que asigna a los atributos x e y. La clase tiene además de los constructores dos métodos accesores (getx() y getY()) que devuelven el valor de los atributos. Y por último un método que recibe como parámetro un objeto de tipo punto que lo que hace es calcular la distancio entre el Objeto punto desde e que se llama el método y el Punto que se le pasa como parámetro.

Para poder calcular la distancia entre los dos debes tener dos objetos de tipo Punto, me imagino que al menos alguno de los dos o los dos son seteados por el usuario, así que al usuario le debes pedir los datos de la posición del punto (x, y), así cuando creas el objeto lo haces de la siguiente manera:

Código
Punto punto = new Punto(x, y); //x e y datos pedidos al usuario.

puedes crear otro punto y pedir los datos al usuario o ponerlos tu. En cuyo caso tendrías:

Código
Punto punto2 = new Punto(x2, y2); // siendo x2 e y2 datos pedidos al usuario o seteados por ti.

Ahora para calcular la distancia entre los dos puntos que se han creado solo basta con hacer:

Código
punto.calcularDistanciaDesde(punto2);

Lo que retornará el resultado de la distancia entre los dos.

Ahora si creas el objeto con el constructor sin parámetros mi sugerencia es que añadas los métodos accesores (setters):

Código
public double setX(double coorX) {
   this.x = coorX;
}
 
public double setY(double coorY) {
   this.y = coorY;
}
 

Por último señalar que en estas lineas:
Código
Punto p1 = new Punto();
t1.setText(p1.calcularDistanciaDesde(p1));

Creas un Objeto de tipo punto con el constructor vacio (lo que deja los atributos en x = 0.0 e y = 0.0) y luego calculas la distancia entre el y el mismo. necesitas un segundo objeto para hacer el calculo. (No es que lo necesites, pero tendría más sentido)

Espero sea de ayuda.

Saludos


« Última modificación: 20 Noviembre 2011, 19:57 por RyogiShiki » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines