Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: fedegaray en 02 de Mayo 2015, 22:57
-
Hola otra vez. Casi llegando al final del curso, vine a mostrar mi resolución de la entrega 94.
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 {
protected double PI = 3.1416;
protected double dimensionPrincipal;
public Figura () {
dimensionPrincipal = 0.0d;
}
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 void setDimensionPrincipal (double dimensiónPrincipal) {
super.setDimensionPrincipal(dimensiónPrincipal);
}
public double getDimensiónPrincipal () {
return super.getDimensionPrincipal();
}
public double calcularArea () {
return dimensionPrincipal * dimensionPrincipal;
}
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 {
public Circulo () {
super();
}
public Circulo (double dimensionPrincipal) {
super (dimensionPrincipal);
}
public double calcularArea () {
return (( dimensionPrincipal / 2 ) * ( dimensionPrincipal / 2 )) * PI ;
}
public void setDimensionPrincipal (double dimensiónPrincipal) {
super.setDimensionPrincipal(dimensiónPrincipal);
}
public double getDimensiónPrincipal () {
return super.getDimensionPrincipal();
}
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) {
Cuadrado cuad1 = new Cuadrado (52);
Cuadrado cuad2 = new Cuadrado (31);
Cuadrado cuad3 = new Cuadrado (52);
Circulo circ1 = new Circulo (33);
Circulo circ2 = new Circulo (33);
Circulo circ3 = new Circulo (52);
System.out.println ("cuad1 es igual a cuad2: " + cuad1.equals(cuad2));
System.out.println ("cuad1 es igual a cuad3: " + cuad1.equals(cuad3));
System.out.println ("cuad1 es igual a circ1: " + cuad1.equals(circ1));
System.out.println ("cuad1 es igual a circ2: " + cuad1.equals(circ2));
System.out.println ("cuad1 es igual a circ3: " + cuad1.equals(circ3));
System.out.println ("cuad2 es igual a cuad3: " + cuad2.equals(cuad3));
System.out.println ("cuad2 es igual a circ1: " + cuad2.equals(circ1));
System.out.println ("cuad2 es igual a circ2: " + cuad2.equals(circ2));
System.out.println ("cuad2 es igual a circ3: " + cuad2.equals(circ3));
System.out.println ("cuad3 es igual a circ1: " + cuad3.equals(circ1));
System.out.println ("cuad3 es igual a circ2: " + cuad3.equals(circ2));
System.out.println ("cuad3 es igual a circ3: " + cuad3.equals(circ3));
System.out.println ("circ1 es igual a circ2: " + circ1.equals(circ2));
System.out.println ("circ1 es igual a circ3: " + circ1.equals(circ3));
System.out.println ("circ2 es igual a circ3: " + circ2.equals(circ3));
}
}
-
Hola fede
Has escrito bien tus clases, solo tengo dos comentarios:
El primero es que en tus metodos para calcular el area y demas, podias haber usado el pow de la clase Math como pudiste ver en el curso:
public double getAreaCirculo(){return (PI * Math.pow(dimensionPrincipal, 2));}
Y el segundo comentario, referente a tu testFigura, quiero que eches un vistazo a esto:
(http://i.imgur.com/Jl5OnYl.png)
estas lineas amarillas quieren decir que los objetos que estas comparando son incompatibles... esto tiene que ver con esta parte del codigo:
Cuadrado cuad1 = new Cuadrado (52);
Cuadrado cuad2 = new Cuadrado (31);
Cuadrado cuad3 = new Cuadrado (52);
Circulo circ1 = new Circulo (33);
Circulo circ2 = new Circulo (33);
Circulo circ3 = new Circulo (52);
Lo correcto era hacer uso del polimorfismo, al hacer esto, estos warnings o quejas de incompatibilidad de tipos desaparecen:
Figura cuad1 = new Cuadrado (52);
Figura cuad2 = new Cuadrado (31);
Figura cuad3 = new Cuadrado (52);
Figura circ1 = new Circulo (33);
Figura circ2 = new Circulo (33);
Figura circ3 = new Circulo (52);
El otro detalle, tambien podias agregar todos esos objetos en un arraylist y recorrerlos, pero esta bien todo°
Saludos!
-
Gracias por las observaciones. Todas son muy válidas y me ayudan a mejorar mi capacidad de codificar. Muchas gracias.
Quiero hacerte una pregunta, porqué a ti te aparecen esas lineas amarillas? en mi BlueJ no aparecen. Será que tengo una versión anticuada quizás?
-
Lo que sucede es que uso otro IDE, se llama netbeans, es un poco mas robusto para usar para la gente nueva, pero no te preocupes, es casi la misma cosa que blueJ! :)