Segue abaixo minha solução para a calculadora de área: Classe principal:
import java.util.ArrayList;
import java.util.Scanner;
public class CalculadoraArea {
public static void main(String[] args) throws InterruptedException {
Scanner scanner = new Scanner(System.in);
Quadrado quadrado = new Quadrado();
Triangulo triangulo = new Triangulo();
Circulo circulo = new Circulo();
System.out.println("Calculadora de área de figuras geométricas 1.0");
System.out.println("Digite o lado do Quadrado: ");
quadrado.lado = scanner.nextDouble();
System.out.println("Digite a base do triângulo: ");
triangulo.base = scanner.nextDouble();
System.out.println("Digite a altura do triângulo: ");
triangulo.altura = scanner.nextDouble();
System.out.println("Digite a o raio do círculo: ");
circulo.raio = scanner.nextDouble();
System.out.println("calculando...");
Thread.sleep(3000);
ArrayList<Forma> listaForma = new ArrayList<>();
listaForma.add(triangulo);
listaForma.add(quadrado);
listaForma.add(circulo);
for (Forma item : listaForma) {
System.out.println("Área do " + item.getClass().getName() + ": " + item.calcularArea());
}
scanner.close();
}
}
Classe áreas e interface (Todas criadas separadamente):
public class Triangulo implements Forma{
double base;
double altura;
@Override
public double calcularArea() {
return (base * altura ) / 2;
}
}
public class Circulo implements Forma{
double raio;
@Override
public double calcularArea() {
return Math.PI * raio * raio;
}
}
public class Quadrado implements Forma {
double lado;
@Override
public double calcularArea() {
return lado * lado;
}
}
public interface Forma {
double calcularArea();
}