Autor Tema: Ejemplo sobreescritura método equals Java ejercicio herencia resuelto CU00694B  (Leído 3514 veces)

el_calderas

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 43
    • Ver Perfil
Hola, aquí dejo mi solución a este ejercicio.

No me he liado mucho y he creado, como dice el texto, una clase padre con un atributo que heredan las clases hijas, las cuales solo difieren por el cuerpo del metodo propio.

Para sobreescibir el metodo en las clases hijas, he incluido el mismo metodo en la clase padre pero con una salida nula (0.0).


Clase Figura:

Código: [Seleccionar]
public class Figura
{
    protected static final double Pi=3.14;
    protected double dimensionPrincipal;
   
    public Figura (double d){
        dimensionPrincipal=d;
    }
   
    public double getDimensionPrincipal(){
        return dimensionPrincipal;
    }
   
    public double calcularArea(){
        return 0.0;
    }

       
}


Clase Cuadrado:

Código: [Seleccionar]
public class Cuadrado extends Figura
{
    //no tiene atributos propios
    public Cuadrado (double d){
        super(d);
    }
   
    //solo tiene metodo propio
    //la dimension principal de un cuadrado es el lado
    //el area de un cuadrado es el lado al cuadrado.
    public double calcularArea(){
        return (super.getDimensionPrincipal()*super.getDimensionPrincipal());
    }
   
    public boolean equals(Object obj){
        if(obj instanceof Cuadrado){
            Cuadrado tmp=(Cuadrado)obj;
            if(super.dimensionPrincipal==(tmp.dimensionPrincipal)){
                return true;
            }else{
                return false;
            }
        }
        return false;
    }

}


Clase Circulo:

Código: [Seleccionar]
public class Circulo extends Figura
{
    //no tiene atributos propios
   
    public Circulo(double d){
        super(d);
    }
   
    //solo tiene metodo propio
    //la dimension principàl seria el radio
    //el area de un circulo se calcula multiplicando pi por el radio al cuadrado.
   
    public double calcularArea(){
        return ((super.getDimensionPrincipal()*super.getDimensionPrincipal())*Pi);
    }
   
    public boolean equals(Object obj){
        if(obj instanceof Circulo){
            Circulo tmp=(Circulo)obj;
            if(super.dimensionPrincipal==(tmp.dimensionPrincipal)){
                return true;
            }else{
                return false;
            }
        }
        return false;
    }
}


Clase main:

Código: [Seleccionar]
public class TestEquals
{
    public static void main(String[] Argas){
        Figura cuadrado1=new Cuadrado(2);
        Figura cuadrado2=new Cuadrado(5);
        Figura cuadrado3=new Cuadrado(2.1);
        Figura cuadrado4=new Cuadrado(2.0);
        Figura circulo1=new Circulo(2.5);
        Figura circulo2=new Circulo(2.8);
        Figura circulo3=new Circulo(4);
        Figura circulo4=new Circulo(2.5);
       
       
        System.out.println("El area del cuadrado1 es: "+ cuadrado1.calcularArea());
        System.out.println("El area del cuadrado2 es: "+ cuadrado2.calcularArea());
        System.out.println("El area del cuadrado3 es: "+ cuadrado3.calcularArea());
        System.out.println("El area del cuadrado4 es: "+ cuadrado4.calcularArea());
        System.out.println("El area del circulo1 es: "+ circulo1.calcularArea());
        System.out.println("El area del circulo2 es: "+ circulo2.calcularArea());
        System.out.println("El area del circulo3 es: "+ circulo3.calcularArea());
        System.out.println("El area del circulo4 es: "+ circulo4.calcularArea());
        System.out.println("¿Son iguales el cuadrado1 y el cuadrado2?: " + cuadrado1.equals(cuadrado2));
        System.out.println("¿Son iguales el cuadrado1 y el cuadrado3?: " + cuadrado1.equals(cuadrado3));
        System.out.println("¿Son iguales el cuadrado1 y el cuadrado4?: " + cuadrado1.equals(cuadrado4));
        System.out.println("¿Son iguales el circulo1 y el circulo2?: " + circulo1.equals(circulo2));
        System.out.println("¿Son iguales el circulo1 y el circulo3?: " + circulo1.equals(circulo3));
        System.out.println("¿Son iguales el circulo1 y el circulo4?: " + circulo1.equals(circulo4));
    }
   
}

Un saludo y espero vuestros comentarios/consejos.
« Última modificación: 31 de Julio 2015, 11:16 por Alex Rodríguez »

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Re:CU00694B sobreescribir metodo equals
« Respuesta #1 en: 30 de Julio 2015, 10:11 »
Hola calderas

Has cumplido con lo que pedía el ejercicio, métodos para calcular áreas, sobreescritura de los métodos equals y creación de un test donde realizas comparaciones, lo veo todo bien. En la clase figura has definido el atributo Pi. Esto conceptualmente no es muy acertado, ya que Pi no es aplicable a todas las figuras (por ejemplo en un cuadrado) y posiblemente hubiera sido mejor que estuviera asociado a la clase Circulo.

Saludos

el_calderas

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 43
    • Ver Perfil
Re:Ejemplo sobreescritura método equals Java ejercicio CU00694B
« Respuesta #2 en: 30 de Julio 2015, 22:57 »
Hola, gracias por la respuesta.
En cuanto a la constante Pi, el hecho de declararla en la clase figura era con vistas a una posible utilización en cualquier otra figura que la utilizase, como area de un cono, de una esfera, etc..

Un saludo.

 

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