Autor Tema: Aprender Java desde cero,Sobreescribir métodos toString y equals, CU00694B  (Leído 2254 veces)

camoay

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 44
    • Ver Perfil
Buenos días, aquí les dejo mi ejercicio:

Clase Figura:
Código: [Seleccionar]
package aprenderaprogramar.java.iniciacion.clase94;

public class Figura {
private double dimensionPrincipal;

// constructores
Figura(){ dimensionPrincipal = 0; }
Figura(double dimensionPrincipal){ this.dimensionPrincipal = dimensionPrincipal; }

// Métodos
public double getDimensionPrincipal() { return dimensionPrincipal; }
public void setDimensionPrincipal(double dimensionPrincipal) { this.dimensionPrincipal = dimensionPrincipal; }

public String toString(){ return "  Objeto Figura, con una Dimension Principal de :"+dimensionPrincipal; }

public boolean equals(Object obj){
if(obj instanceof Figura){
Figura tmpFigura = (Figura) obj;
if(this.dimensionPrincipal == tmpFigura.dimensionPrincipal)
return true;
else
return false;
}else return false;
}// fin método equals
}// fin clase

Clase Círculo:
Código: [Seleccionar]
package aprenderaprogramar.java.iniciacion.clase94;

import java.lang.Math;

public class Circulo extends Figura {

//Constructores
Circulo(){ super(); }
Circulo(double dimensionPrincipal){ super(dimensionPrincipal); }

// Métodos
public double calcularArea(){return Math.PI * getDimensionPrincipal() * getDimensionPrincipal(); }

public String toString(){ return "Objeto Círculo, subclase de Figura :\n"+super.toString(); }

public boolean equals(Object obj){
if(obj instanceof Circulo){
Circulo tmpCirculo = (Circulo) obj;
if(super.equals(tmpCirculo))
return true;
else
return false;
}else return false;
}// fin método equals
}// fin de clase

Clase Cuadrado:
Código: [Seleccionar]
package aprenderaprogramar.java.iniciacion.clase94;

public class Cuadrado extends Figura{

// Constructores
Cuadrado(){ super(); }
Cuadrado(double dimensionPrincipal){super(dimensionPrincipal); }

// métodos
public double calcularArea(){ return getDimensionPrincipal() * getDimensionPrincipal(); }

public String toString(){ return "Objeto Cuadrado, subclase de Figura :\n"+super.toString(); }

public boolean equals(Object obj){
if(obj instanceof Cuadrado){
Cuadrado tmpCuadrado = (Cuadrado) obj;
if(super.equals(tmpCuadrado))
return true;
else
return false;
}else return false;
}// fin método equals
}// fin de clase

Clase Test:
Código: [Seleccionar]
package aprenderaprogramar.java.iniciacion.clase94;

public class Test {

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

Circulo circulo1 = new Circulo(3);
Circulo circulo2 = new Circulo(3);
Circulo circulo3 = new Circulo(5);

       System.out.println ("\nComparaciones con cuadrados");
       System.out.println ("¿Son iguales el cuadrado1 y el cuadrado2? "+ cuadrado1.equals(cuadrado2) );
       System.out.println ("¿Son el mismo objeto el cuadrado1 y el cuadrado2? "+ (cuadrado1 == cuadrado2));
       System.out.println ("¿Son iguales el cuadrado1 y el cuadrado3? "+ cuadrado1.equals(cuadrado3) );
       System.out.println ("cuadrado1 es un "+cuadrado1.toString()+" \ny cuadrado3 es un "+ cuadrado3.toString());
       System.out.println ("\nComparaciones con círculos");
       System.out.println ("¿Son iguales el circulo1 y el circulo2? " + circulo1.equals(circulo2) );
       System.out.println ("¿Son el mismo objeto el circulo1 y el circulo2? " + (circulo1 == circulo2) );
       System.out.println ("¿Son iguales el circulo1 y el circulo3? " + circulo1.equals(circulo3) );
       System.out.println ("circulo1 es un "+circulo1.toString()+" \ny circulo3 es un "+ circulo3.toString());   
}// end main method
}// end class

Agradeceré cualquier correccion o sugerencia.


Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Aprender Java desde cero,Sobreescribir métodos toString y equals, CU00694B
« Respuesta #2 en: 18 de Diciembre 2016, 12:24 »
Hola camoay veo bien el código, al principio me resultó extraño el método equals de Circulo y Cuadrado.

Por ejemplo:

Código: [Seleccionar]
public boolean equals(Object obj){
if(obj instanceof Circulo){
Circulo tmpCirculo = (Circulo) obj;
if(super.equals(tmpCirculo))
return true;
else
return false;
}else return false;
}// fin método equals

Pero después ya me di cuenta de que estabas referenciando al equals de la superclase Figura, con lo cual ¡perfecto! En ambos casos usas como criterio de igualdad dimensión principal, por tanto reutilizas código si lo agrupas den la superclase Figura

Saludos

 

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