// INTERFACE
package br.alura.interfaces;
public interface Forma {
public double calcularArea();
}
// SUPERCLASSE
package br.alura.modelo;
public class Geometria {
protected String forma;
protected double altura;
protected double largura;
public Geometria(String forma, double altura, double largura) {
this.altura = altura;
this.largura = largura;
this.forma = forma;
}
public double getAltura() {
return altura;
}
public double getLargura() {
return largura;
}
public String getForma() {
return forma;
}
@Override
public String toString() {
return "Geometria{" +
"forma='" + forma + '\'' +
", altura=" + altura +
", largura=" + largura +
'}';
}
}
// SUBCLASSES
package br.alura.modelo;
import br.alura.interfaces.Forma;
public class Circulo extends Geometria implements Forma {
public Circulo(String forma, double altura, double largura) {
super(forma, altura, largura);
}
@Override
public double calcularArea() {
return 2 * (this.altura + this.largura);
}
}
package br.alura.modelo;
import br.alura.interfaces.Forma;
public class Quadrado extends Geometria implements Forma {
public Quadrado(String forma, double altura, double largura) {
super(forma, altura, largura);
}
@Override
public double calcularArea() {
return this.altura * this.largura;
}
}
// MAIN
import br.alura.interfaces.Forma;
import br.alura.modelo.Circulo;
import br.alura.modelo.Quadrado;
import java.util.ArrayList;
public static void main(String[] args) {
ArrayList<Forma> formas = new ArrayList<>();
Circulo forma1 = new Circulo( "circulo", 12, 3);
formas.add(forma1);
Circulo forma2 = new Circulo( "palco",4.5, 6.2);
formas.add(forma2);
Circulo forma3 = new Circulo("bola",0.50,0.50);
formas.add(forma3);
Quadrado forma4 = new Quadrado("cubo",2,2);
formas.add(forma4);
Quadrado forma5 = new Quadrado("piso",0.5,0.5);
formas.add(forma5);
Quadrado forma6 = new Quadrado( "quadro",10,10);
formas.add(forma6);
for(Forma item: formas){
if(item instanceof Circulo circulo){
System.out.printf("Area do %s\n",circulo.getForma().toUpperCase());
System.out.println(item.calcularArea());
}else if(item instanceof Quadrado quadrado){
System.out.printf("Area do %s\n",quadrado.getForma().toUpperCase());
System.out.println( item.calcularArea());
}
}
}