Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Desafio: hora da prática - Atividade 01

Program.cs

using Formas.Modelos;

Retangulo retangulo = new Retangulo();
Circulo circulo = new Circulo();

retangulo.CalcularArea();
retangulo.CalcularPerimetro();

circulo.CalcularArea();
circulo.CalcularPerimetro();

IForma.cs

namespace Formas.Modelos;
internal interface IForma {
    public void CalcularArea();
    public void CalcularPerimetro();
}

Circulo.cs

namespace Formas.Modelos;
internal class Circulo : IForma {
    private double raio;

    private void ObterEntradaUsuario() {
        Console.Clear();
        Console.Write("Qual o raio do círculo: ");
        double.TryParse(Console.ReadLine()!, out raio);
    }
    public void CalcularArea() {
        ObterEntradaUsuario();
        double area = raio * raio * Math.PI;
        Console.WriteLine($"A área do círculo é de: {Math.Round(area, 2)}");
        Console.ReadKey();
    }
    public void CalcularPerimetro() {
        ObterEntradaUsuario();
        double perimetro = raio * 2 * Math.PI;
        Console.WriteLine($"O perímetro do círculo é de: {Math.Round(perimetro, 2)}");
        Console.ReadKey();
    }
}

Retangulo.cs

namespace Formas.Modelos;
internal class Retangulo : IForma {
    private double comprimento;
    private double largura;

    private void ObterEntradaUsuario() {
        Console.Clear();
        Console.Write("Qual o comprimento do retângulo: ");
        double.TryParse(Console.ReadLine()!, out comprimento);
        Console.Write("Qual a largura do retângulo: ");
        double.TryParse(Console.ReadLine()!, out largura);
    }
    public void CalcularArea() {
        ObterEntradaUsuario();
        double area = comprimento * largura;
        Console.WriteLine($"A área do retângulo é de: {Math.Round(area, 2)}");
        Console.ReadKey();
    }
    public void CalcularPerimetro() {
        ObterEntradaUsuario();
        double perimetro = (comprimento * 2) + (largura * 2);
        Console.WriteLine($"O perímetro do retângulo é de: {Math.Round(perimetro, 2)}");
        Console.ReadKey();
    }
}
1 resposta
solução!

Oi, Diego. Como vai?

Gostei da forma como você organizou a solução com a interface IForma e separou as responsabilidades entre Circulo e Retangulo. Isso mostra um bom entendimento de Orientação a Objetos, porque você criou uma estrutura em comum para cálculos diferentes. Um ponto que chamou atenção é que o método ObterEntradaUsuario() tá sendo chamado tanto em CalcularArea() quanto em CalcularPerimetro(), então os dados são pedidos mais de uma vez. Uma melhoria interessante seria capturar os valores uma vez e reaproveitá-los nos dois cálculos.

Uma dica interessante para o futuro é usar um [ para receber os valores já no momento de criar o objeto. Assim, o código fica mais organizado e evita repetição.


double raio = 5;
Circulo circulo = new Circulo(raio);
circulo.CalcularArea();
circulo.CalcularPerimetro();
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!