Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: paramonso en 20 de Noviembre 2018, 11:53
-
Hola dejo el ejercicio CU00694B del tutorial básico de POO. Sobreescribir métodos toString y equals en Java. Comparar objetos. ().
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
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
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
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
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 ;)
-
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