Autor Tema: Java para qué sirve el método equals cómo se utiliza y sobreescribe CU00694B  (Leído 2050 veces)

paramonso

  • Intermedio
  • ***
  • Mensajes: 241
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
Hola dejo el ejercicio CU00694B del tutorial básico de POO. Sobreescribir métodos toString y equals en Java. Comparar objetos. ().

Citar
EJERCICIO

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.


Clase Figura

Código: [Seleccionar]
public class Figura
{
    double dimensionPrincipal;

    /**
     * Constructor for objects of class Figura
     */
    public Figura(double dimensionPrincipal)
    {
        this.dimensionPrincipal=dimensionPrincipal;
    }

    public void setDimensionPrincipal(double dimensionPrincipal){
        this.dimensionPrincipal=dimensionPrincipal;
    }

    public double getDimensionPrincipal(){
        return dimensionPrincipal;
    }
   
   
    public boolean equals (Object obj){
        Figura tmpFigura=(Figura) obj;
        if (this.dimensionPrincipal==tmpFigura.dimensionPrincipal){
            return true;
        }
        else {return false;}
    }
}


Clase Circulo

Código: [Seleccionar]
public class Circulo extends Figura
{

    /**
     * Constructor for objects of class Circulo
     */
    public Circulo(double dimensionPrincipal)
    {
        super(dimensionPrincipal);

    }
    // Metodo para calcular el area del circulo
    public double calcularArea(){
        //Area del circulo area= pi * radio al cuadrado
        double area, r;
        r=super.getDimensionPrincipal();
        return area=Math.PI*Math.pow(r,2);
    }

    // Código que añadimos a la clase Circulo. Sobreescritura del método equals ejemplo aprenderaprogramar.com
         public boolean equals(Object obj){
        if (obj instanceof Circulo){
            return super.equals(obj);
        } else {
            return false;
        }
    }
}

Clase Cuadrado
Código: [Seleccionar]
public class Cuadrado extends Figura
{
     

    /**
     * Constructor for objects of class Cuadrado
     */
    public Cuadrado(double dimensionPrincipal)
    {
         super(dimensionPrincipal);
    }
 public double calcularArea(){
     //Area del cuadrado area=lado*lado
     double lado=super.getDimensionPrincipal();
     double area;
     return area=Math.pow(lado,2);
     
    }
     // Código que añadimos a la clase Circulo. Sobreescritura del método equals ejemplo aprenderaprogramar.com
    public boolean equals(Object obj){
       
        if (obj instanceof Cuadrado){
            return super.equals(obj);
        } else {
            return false;
        }
    }
   
   
}

Clase TestHerencia5
Código: [Seleccionar]
public class TestHerencia5 {

    public static void main(String[] args) {
        Cuadrado cuadrado1 = new Cuadrado(5);
        Cuadrado cuadrado2 = new Cuadrado(15);
        Cuadrado cuadrado3 = new Cuadrado(5);

        Circulo circulo1 = new Circulo(3);
        Circulo circulo2 = new Circulo(12);
        Circulo circulo3 = new Circulo(3);
        System.out.println("\n\t\t**** EJERCICIO CU00694B sobreescribir metodo toString equals java comparar objetos ****\n");

        System.out.println("El área del cuadrado1 es: "+cuadrado1.calcularArea());
        System.out.println("El área del cuadrado2 es: "+cuadrado2.calcularArea());
        System.out.println("El área del cuadrado3 es: "+cuadrado3.calcularArea()+"\n");

        System.out.println("¿Es igual el valor de cuadrado1 y cuadrado2 ? "+cuadrado1.equals(cuadrado2));
        System.out.println("¿Es igual el valor de cuadrado2 y cuadrado3 ? "+cuadrado2.equals(cuadrado3));
        System.out.println("¿Es igual el valor de cuadrado3 y el cuadrado1 ? "+cuadrado3.equals(cuadrado1));
        System.out.println("¿El cuadrado3 y el cuadrado1 son el Mismo objeto ? "+(cuadrado3==cuadrado1)+"\n");

        System.out.println("El área del círculo1 es: "+circulo1.calcularArea());
        System.out.println("El área del círculo2 es: "+circulo2.calcularArea());
        System.out.println("El área del círculo3 es: "+circulo3.calcularArea()+"\n");

        System.out.println("¿Es igual el valor de circulo1 y circulo2? "+circulo1.equals(circulo2)); 
        System.out.println("¿Es igual el valor de circulo2 y circulo3? "+circulo2.equals(circulo3)); 
        System.out.println("¿Es igual el valor de circulo3  y circulo1? "+circulo3.equals(circulo1)); 
        System.out.println("¿El círculo3 y el círculo1 son el Mismo objeto ? "+(circulo3==circulo1));

    }

}

Gracias ;)
« Última modificación: 14 de Agosto 2019, 19:08 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas, para quien revise este ejercicio comentar que la clase Figura tiene declarado su atributo dimensionPrincipal sin modificador de acceso (public, private, protected). Esto es legal dentro del lenguaje, pero, excepto se haga por motivos muy concretos, suele considerarse una mala práctica de programación. Por norma general declararemos los atributos private, tal y como se ha ido haciendo en el curso.

Puede verse algún comentario adicional en https://aprenderaprogramar.com/foros/index.php?topic=2973.0

Salu2

 

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