Problema con clases y objetos en Java.

Iniciado por juligarc10, 30 Enero 2019, 17:55 PM

0 Miembros y 1 Visitante están viendo este tema.

juligarc10

Hola amigos. Les pido ayuda porque estoy intentando hacer un ejercicio en Java, usando el programa NetBeans. El único error aparente que hay es que al importar la clase, el programa me dice "Import from the same package". El programa consiste en que hay una clase que es un Polígono regular. El ejercicio persigue que se nos devuelva el valor de sus angulos (todos será iguales ya que es regular), según el numero de lados que le introduzcas. Aquí os dejo el código. Gracias.

Esta es la parte principal del programa.

package ejercicio4;
import ejercicio4.Poligono;

public class Ejercicio4 {

   
    public static void main(String[] args) {
        Poligono poli=new Poligono (4);
        System.out.println("La medida de los ángulos de este polígono regular es "+poli.getAngulo());
       
    }
   
}


Esta es la clase del Polígono.


package ejercicio4;


public class Poligono {
    private int numLados;
    private int angulo;
   
   
    public Poligono(int x){
    numLados=x;
    }
   
    public void calcularAngulo(int numLados){
        angulo=(360/numLados);
    }
    public int getAngulo(){
        return angulo;
    }
}




Muchas gracias a todos. Un saludo.

rub'n

quita esta linea y usa Geshi

Código (java) [Seleccionar]
import ejercicio4.Poligono;

tanto Ejercicio4 como Polígono están en el mismo paquete, no te hace falta hacer import


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

Serapis

...aparte tienes un error semántico.

Creas la instancia de polígono, pero en ningún momento invocas calcular el polígono, luego al solicitar getangulo, devolverá 0.

Puede ser buena idea que al crearla instancia con NEW, si el parámetro no es 0, invoque la funcion CalcularAngulo

Algo así, mejor:
Código (java) [Seleccionar]

public class Poligono {
    private int numLados;
    private int angulo;
   
   
    public Poligono(int x){
        numLados=x;
        if (x>0){
            CalcularAngulo;
        }
    }
   
    public void calcularAngulo(){
        angulo=(360/numLados);
    }

    public int getAngulo(){
        return angulo;
    }
}

Nota finalmente como al método calcularAngulo, se le ha retirado el parámetro... la razón es que el parámetro ya está interno, tenerlo es tolerar errores, pués si se le pasa otro valor distinto a aquel con el que se creó la instancia el valor de ángulo quedará erróneo.
Por otro lado, si el ángulo se calcula cuando se crea la instancia, carece de sentido que dicho método sea público, basta calcularlo una vez, su valor no va a cambiar aunque lo llames 40 veces, luego procede hacerlo privado, o mejor aún quitarlo y pasar su código a la función NEW.

Podria interesar tener una clase estática, con un método que pase el parámetro numLados y devuelva el ángulo sin almacenar nada, así cada instancia al ser creada además de almacenar  ambos datos, podrían invocar dicho método para hacer el cálculo a la vez que el usuario externamente podría hacer tales cálculos cuando fuere preciso, sin necesidad de tener que crear explícitamente una instancia para ocasión... pero entiendo que es algún ejercicio...

juligarc10

Muchas gracias. Tu colaboración me ha resultado de gran ayuda!!! Un saludo amigo.