El enunciado es: En el siguiente post se creó una jerarquía de clases de figuras geométricas. Implementar una interfaz que defina un método que devuelva el número de lados. Hacer que las figuras que tengan lados (el círculo no tiene) la implementen.
Main.java
package main;
import figuras.*;
public class Main {
public static void main(String[] args) {
Figuras figuras = new Figuras();
figuras.annade(new Circulo(3.456));
figuras.annade(new Triangulo(3.456,2.17));
figuras.annade(new Cuadrado(2.11));
if(!figuras.annade(new Triangulo(3.12,5.6),7)) {
System.out.println("Error al borrar");
}
figuras.lista();
figuras.borra(0);
figuras.borra(33);
System.out.println("---------------------");
figuras.lista();
}
}
Triangulo.java
package figuras;
public class Triangulo extends Figura implements Lados {
private double base;
private double altura;
public Triangulo(double base, double altura) {
this.base = base;
this.altura = altura;
}
@Override
public double calculaArea() {
return (base*altura)/2;
}
@Override
public int numLados() {
return 3;
}
}
Lados.java
package figuras;
public interface Lados {
abstract public int numLados();
}
Figuras.java
package figuras;
import java.util.LinkedList;
public class Figuras {
// No hay restricción si utilizamos colecciones (ver unidad 9)
private LinkedList<Figura> lista = new LinkedList<>();
public void annade(Figura f) {
lista.add(f);
}
public void borra() {
lista.removeLast();
}
public boolean annade(Figura f, int pos) {
try {
lista.add(pos, f);
}
catch(Exception e) {
return false;
}
return true;
}
public void borra(int pos) {
// Si se intenta borrar una que no existe que no haga nada
try {
lista.remove(pos);
} catch(Exception e) {}
}
public void lista() {
for(Figura f: lista) {
System.out.println("Figura: "+f);
if(f instanceof Lados) {
Lados l = (Lados)f;
System.out.println("\tNum lados: "+l.numLados());
}
}
}
}
Figura.java
package figuras;
public abstract class Figura {
abstract public double calculaArea();
}
Cuadrado.java
package figuras;
public class Cuadrado extends Figura implements Lados{
private double lado;
public Cuadrado(double lado) {
this.lado = lado;
}
@Override
public double calculaArea() {
return lado * lado;
}
@Override
public int numLados() {
return 4;
}
}
Circulo.java
package figuras;
public class Circulo extends Figura {
private double radio;
public Circulo(double radio) {
this.radio = radio;
}
@Override
public double calculaArea() {
return Math.PI*radio*radio;
}
}
Puedes ver todos mis ejercicios de JAVA en este enlace.