Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Resposta - Exercício 1

Interface IShape:

namespace exercise74.Models;

internal interface IShape
{
    public double CalculateArea();
    public double CalculatePerimeter();
}

Classe Circle:

namespace exercise74.Models;

internal class Circle : IShape
{
    private double _pi => 3.14;
    private double _area;
    private double _perimeter;
    public double Radius { get; }

    public Circle(double radius)
    {
        Radius = radius;
    }

    public double CalculateArea()
    {
        _area = _pi * (Radius * Radius);
        Console.WriteLine($"The area of the circle is equal to {_area:F2}");
        return _area;
    }

    public double CalculatePerimeter()
    {
        _perimeter = 2 * _pi * Radius;
        Console.WriteLine($"The perimeter of the circle is equal to {_perimeter:F2}");
        return _perimeter;
    }
}

Classe Rectangle:

namespace exercise74.Models;

internal class Rectangle : IShape
{
    private double _area;
    private double _perimeter;
    public double Height { get; }
    public double Width { get; }

    public Rectangle(double height, double width)
    {
        Height = height;
        Width = width;
    }

    public double CalculateArea()
    {
        _area = Height * Width;
        Console.WriteLine($"The area of the rectangle is equal to {_area:F2}");
        return _area;
    }

    public double CalculatePerimeter()
    {
        _perimeter = (Height * 2) + (Width * 2);
        Console.WriteLine($"The perimeter of the rectangle is equal to {_perimeter:F2}");
        return _perimeter;
    }
}

Instâncias:

using exercise74.Models;

Circle circle = new Circle(10);
circle.CalculateArea();
circle.CalculatePerimeter();
Console.WriteLine();

Rectangle rectangle = new Rectangle(19, 10);
rectangle.CalculateArea();
rectangle.CalculatePerimeter();
Console.WriteLine();
2 respostas
solução!

Olá, Carlos! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de interfaces para padronizar o comportamento das formas geométricas, utilizou muito bem a sobrescrita de métodos para especializar o cálculo em cada classe e ainda compreendeu a importância da encapsulação ao proteger os atributos com private.

Uma dica interessante para o futuro é utilizar Math.PI no lugar de um valor fixo. Assim:

private double _pi => Math.PI;

Isso faz com que o cálculo seja mais preciso e alinhado com boas práticas da linguagem.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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

Obrigado pelo suporte, Daniel.