Autor Tema: Ejemplo equals Java Ejercicio CU00694B del tutorial Sobreescribir metodo equals!  (Leído 3415 veces)

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Buenas tardes!

En esta relajada tarde y fin de semana me la he pasado dormido muy feliz porque al fin ando de vacas  :'(, quiero continuar con el curso de html pero primero debo acabar este (A terminar lo que empece!) que por cierto super útil estos cursos, no tienen idea de cuan satisfecho me siento :)

Vengo a resolver el ejercicio 94° del curso, con el siguiente enunciado:
 
Define una clase Figura de la que hereden otras dos clases denominadas Cuadrado y Círculo. La clase figura debe tener al menos el campo dimensionPrincipal. Las clases Cuadrado y Círculo deben tener al menos un método calcularArea que permita calcular el área a partir de la dimensión principal, utilizando la fórmula matemática correspondiente. Además, sobreescribe el método equals para que dos cuadrados sean iguales si tienen igual dimensión principal, y dos círculos idem. A continuación crea un programa test donde crees varios círculos y cuadrados y hagas comprobaciones de igualdad usando el método equals.

Super clase Figura:
Código: [Seleccionar]
package Figuras;

public class Figura {
    protected double dimensionPrincipal;
    public Figura(double dimensionPrincipal){
        this.dimensionPrincipal = dimensionPrincipal;
    }
    public void setDimensionPrincipal(double dato){dimensionPrincipal = dato;}
    public double getDimensionPrincipal(){return dimensionPrincipal;}
}

Clase Circulo:
Código: [Seleccionar]
package Figuras;

public class Circulo extends Figura {
    public Circulo(double dimensionPrincipal){super(dimensionPrincipal);}
     public double getAreaCirculo(){return (3.14 * Math.pow(dimensionPrincipal, 2));}
     public boolean equals(Object obj){
         if(obj instanceof Circulo){
         Circulo AuxC = (Circulo)obj;
         if(this.dimensionPrincipal == AuxC.dimensionPrincipal){return true;}
         else{return false;}       
     }else{return false;}
     }
}

Clase Cuadrado:
Código: [Seleccionar]
package Figuras;
public class Cuadrado extends Figura{
    public Cuadrado(double dimensionPrincipal){super(dimensionPrincipal);}
    public double getAreaCuadrado(){return (Math.pow(dimensionPrincipal, 2));}
    public boolean equals(Object obj){
        if(obj instanceof Cuadrado){           
           Cuadrado AuxC = (Cuadrado)obj;
           if(this.dimensionPrincipal == AuxC.dimensionPrincipal){return true;}
           else{return false;}
        }
        else{return false;}
}
}

Prueba!
Código: [Seleccionar]
package Figuras;

public class Test {
    public static void main(String[]args){
        Cuadrado figuraCuadrada = new Cuadrado(35.04);
        Cuadrado figuraCuadradita = new Cuadrado(23.20);
        Cuadrado figuraCuadra = new Cuadrado(23.20);
        Circulo circulo1 = new Circulo(19.30);
        Circulo circulo2 = new Circulo(14.24);
        Circulo circulo3 = new Circulo(19.30);
        System.out.println("FiguraCuadrada es igual que FiguraCuadradita?: " + figuraCuadrada.equals(figuraCuadradita));
        System.out.println("FiguraCuadradita es igual que FiguraCuadra?: " + figuraCuadradita.equals(figuraCuadra));
        System.out.println("Circulo1 es igual que Circulo2?: " + circulo1.equals(circulo2));
        System.out.println("Circulo1 es igual que Circulo3?: " + circulo1.equals(circulo3));
    }
}

Ejecución:


Espero sus comentarios y correcciones
Saludos! y gracias..!
« Última modificación: 27 de Abril 2015, 10:02 por Alex Rodríguez »
"Luchar por tus sueños y cumplirlos... eso es vivir.."

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola Dan, me parece que aciertas terminando lo que empezaste. ¡Y me das envidia por estar de vacas! Intentamos ofrecer aquí un sitio donde entre todos nos preocupemos por ayudar y hacer las cosas lo mejor posibles, con contenidos de calidad. Los cursos pueden resultar muy provechosos siempre que se sigan paso a paso y con constancia como has hecho tú.

Para tu código pocos comentarios.

En lugar de public double getAreaCirculo(){return (3.14 * Math.pow(dimensionPrincipal, 2));}

te recomiendo usar public double getAreaCirculo(){return (Math.PI * Math.pow(dimensionPrincipal, 2));}

Puedes ver que se trata de un atributo estático de la clase Math que te devuelve el número pi: https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html

También aunque no sea necesario en este ejercicio te recomiendo que no declares

Código: [Seleccionar]
Cuadrado figuraCuadrada = new Cuadrado(35.04);
        Cuadrado figuraCuadradita = new Cuadrado(23.20);
        Cuadrado figuraCuadra = new Cuadrado(23.20);
        Circulo circulo1 = new Circulo(19.30);
        Circulo circulo2 = new Circulo(14.24);
        Circulo circulo3 = new Circulo(19.30);

En vez de eso usa el polimorfismo, así te acostumbras a las buenas prácticas de la programación orientada Java, de este modo puedes tratar a los objetos como si fueran de un tipo u otro según necesites

Código: [Seleccionar]
Figura figuraCuadrada = new Cuadrado(35.04);
        Figura figuraCuadradita = new Cuadrado(23.20);
        Figura figuraCuadra = new Cuadrado(23.20);
        Figura circulo1 = new Circulo(19.30);
        Figura circulo2 = new Circulo(14.24);
        Figura circulo3 = new Circulo(19.30);

Del mismo modo para declarar un ArrayList usa List<String> miLista = new ArrayList<String>(); y así en general, para aprovecharte del polimorfismo

Saludos

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Aww si verdad!! falle ahí, lo hubiese hecho de esa forma! Lo del numero pi no lo conocía.... apuntado!

Saludos y gracias!!
"Luchar por tus sueños y cumplirlos... eso es vivir.."

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".