1
resposta

[Projeto] Criar uma hierarquia de classes representando formas geométricas, como Quadrado, Círculo e Triângulo. Utilize herança para criar uma classe base chamada FormaGeometrica, que contenha métodos para calcular a área e o perímetro de uma forma.

internal abstract class FormaGeometrica
{
    public abstract double CalcularArea();
    public abstract double CalcularPerimetro();
}

internal class Circulo : FormaGeometrica
{
    private const double PI = 3.14;

    public Circulo(double raio)
    {
        Raio = raio;
    }

    public double Raio {get; }
    public override double CalcularArea()
    {
        return PI * (Raio * Raio);
    }

    public override double CalcularPerimetro()
    {
        return 2 * PI * Raio;
    }
}

internal class Quadrado : FormaGeometrica
{
    public Quadrado(double altura)
    {
        Altura = altura;
    }

    public double Altura {get;}

    public override double CalcularArea()
    {
        return Altura * Altura;
    }

    public override double CalcularPerimetro()
    {
        return Altura + Altura + Altura + Altura;
    }
}

internal class Triangulo : FormaGeometrica
{
    public Triangulo(double @base, double altura, double lado)
    {
        Base = @base;
        Altura = altura;
        Lado = lado;
    }

    public double Base { get; }
    public double Altura { get; }
    public double Lado { get; }

    public override double CalcularArea()
    {
        return (Base * Altura) / 2;
    }

    public override double CalcularPerimetro()
    {
        return Lado + Lado + Lado;
    }
}
1 resposta

Oi, Eduardo! Como vai?

Seu projeto ficou bem estruturado: a classe abstrata FormaGeometrica centraliza os métodos CalcularArea() e CalcularPerimetro(), e as classes Circulo, Quadrado e Triangulo aplicam bem o conceito de herança e sobrescrita de métodos com override.

Uma dica interessante para o futuro é usar Math.PI no lugar de uma constante manual para o valor de PI, deixando o cálculo mais preciso. Veja um exemplo:


public override double CalcularArea()
{
    return Math.PI * Math.Pow(Raio, 2);
}

Esse código calcula a área do círculo usando Math.PI e Math.Pow(), que elevam o raio ao quadrado. No Quadrado, o perímetro também poderia ser simplificado com return Altura * 4;. Muito bom ver sua aplicação dos conceitos de orientação a objetos.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!