Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: pedro,, en 24 de Julio 2015, 22:02
-
Aquí mi ejercicio CU00694B
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{
private double dimensionPrincipal;
public Figura(){
dimensionPrincipal = 0;
}
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){
if (obj instanceof Figura){
Figura tmpFigura = (Figura) obj;
if (this.dimensionPrincipal == tmpFigura.dimensionPrincipal){
return true;
} else {
return false;
}
} else {
return false;
}
}
}
Clase Cuadrado
public class Cuadrado extends Figura{
public Cuadrado(){
super();
}
public Cuadrado(double dimensionPrincipal){
super(dimensionPrincipal);
}
public double calcularArea(){
return Math.pow(super.getDimensionPrincipal(), 2);
}
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;
}
}
}
Clase Circulo
public class Circulo extends Figura{
private static final double PI = 3.1416;
public Circulo(){
super();
}
public Circulo(double dimensionPrincipal){
super(dimensionPrincipal);
}
public double calcularArea(){
return (PI * Math.pow(super.getDimensionPrincipal(), 2));
}
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;
}
}
}
Clase TestFigura
public class TestFigura{
public static void main(String [] args){
Figura cuadrado1 = new Cuadrado(2);
Figura cuadrado2 = new Cuadrado(3);
Figura cuadrado3 = new Cuadrado(2);
Figura circulo1 = new Circulo(2);
Figura circulo2 = new Circulo(3);
Figura circulo3 = new Circulo(3);
System.out.println ("cuadrado 1 es igual a cuadrado 2 : " + cuadrado1.equals(cuadrado2));
System.out.println ("cuadrado 1 es igual a cuadrado 3 : " + cuadrado1.equals(cuadrado3));
System.out.println ("cuadrado 1 es igual a circulo 1 : " + cuadrado1.equals(circulo1));
System.out.println ("cuadrado 1 es igual a circulo 2 : " + cuadrado1.equals(circulo2));
System.out.println ("cuadrado 1 es igual a circulo 3 : " + cuadrado1.equals(circulo3));
System.out.println ("cuadrado 2 es igual a cuadrado 3 : " + cuadrado2.equals(cuadrado3));
System.out.println ("cuadrado 2 es igual a circulo 1 : " + cuadrado2.equals(circulo1));
System.out.println ("cuadrado 2 es igual a circulo 2 : " + cuadrado2.equals(circulo2));
System.out.println ("cuadrado 2 es igual a circulo 3 : " + cuadrado2.equals(circulo3));
System.out.println ("cuadrado3 es igual a circulo 1 : " + cuadrado3.equals(circulo1));
System.out.println ("cuadrado3 es igual a circulo 2 : " + cuadrado3.equals(circulo2));
System.out.println ("cuadrado3 es igual a circulo 3 : " + cuadrado3.equals(circulo3));
System.out.println ("circulo 1 es igual a circulo 2 : " + circulo1.equals(circulo2));
System.out.println ("circulo 1 es igual a circulo 3 : " + circulo1.equals(circulo3));
System.out.println ("circulo 2 es igual a circulo 3 : " + circulo2.equals(circulo3));
}
}
gracias por vuestro tiempo.
-
Hola Pedro veo el código correctamente resuelto
Como pequeñas mejoras: en lugar de definir pi podrías haber rescatado el valor usando la propia clase Math, que permite recuperar el valor de Pi (ver https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#PI)
Una pequeña mejora que veo posible sería simplificar los métodos equals.
En la clase Cuadrado quedaría con una pequeña simplificación:
public boolean equals(Object obj){
if (obj instanceof Cuadrado){
return super.equals(obj);
} else {
return false;
}
}
Y en la clase Circulo quedaría con la misma pequeña simplificación:
public boolean equals(Object obj){
if (obj instanceof Circulo){
return super.equals(obj);
} else {
return false;
}
}
Saludos
-
Gracias por los apuntes Mario R. Rancel, ya cambié los métodos equals y queda aprendido el apunte sobre la clase Math.