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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  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 2,078 veces)
Lain0x

Desconectado Desconectado

Mensajes: 72


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

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: 745


げんしけん - Hikkikomori FTW!!!


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

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
  1. 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
  1. 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
  1. 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
  1. public double setX(double coorX) {
  2.    this.x = coorX;
  3. }
  4.  
  5. public double setY(double coorY) {
  6.    this.y = coorY;
  7. }
  8.  

Por último señalar que en estas lineas:
Código
  1. Punto p1 = new Punto();
  2. 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 pm por RyogiShiki » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema con clase streamwriter
.NET (C#, VB.NET, ASP)
Free-Knowledgend 5 5,379 Último mensaje 14 Julio 2006, 01:46 am
por MaLkAvIaN_NeT
se puede dar herencia de una clase anidada a una clase normal.
Java
kev4142 0 3,409 Último mensaje 7 Agosto 2009, 20:46 pm
por kev4142
Problema de interacion entre una clase Interfaz y la clase que la llama
Java
yeah69 4 4,531 Último mensaje 21 Mayo 2010, 06:30 am
por we4rt
Problema con una clase
PHP
mark182 3 2,043 Último mensaje 30 Agosto 2010, 21:42 pm
por mark182
Diferencia de instancia (CLASE oObjeto; y CLASE *oObjeto = new CLASE();)
Programación C/C++
ahkbar87 2 2,790 Último mensaje 14 Junio 2011, 23:17 pm
por Don Pollo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines