1
resposta

[Projeto] Desafio: hora da prática - Calculadora

class CalculadoraPOO
{
    public double Numero1 { get; set; }
    public double Numero2 { get; set; }
    public string Operacao { get; }

    public CalculadoraPOO(string operacao)
    {
        Operacao = operacao;
    }

    public double Calcular()
    {
        switch (Operacao)
        {
            case "+": return Somar();
            case "-": return Subtrair();
            case "*": return Multiplicar();
            case "/": return Dividir();
            case "^": return Potencia();
            case "r": return RaizQuadrada();
            default: throw new InvalidOperationException("Erro: Operação Invalida");
        }
    }
    private double Somar() => Numero1 + Numero2;
    private double Subtrair() => Numero1 - Numero2;
    private double Multiplicar() => Numero1 * Numero2;
    private double Dividir() => Numero2 != 0
    ? Numero1 / Numero2
    : throw new DivideByZeroException("Erro: Não é possivel dividir por zero!");
    private double Potencia() => Math.Pow(Numero1, Numero2);
    private double RaizQuadrada() => Numero1 > 0
    ? Math.Sqrt(Numero1)
    : throw new InvalidOperationException("Erro: Raiz quadrada negativa!");

}
Console.WriteLine("--- Calculadora OOP ---");

Console.Write("Digite a operação (+, -, *, /, ^, r): ");
string op = Console.ReadLine()!.ToLower();


CalculadoraPOO calc = new CalculadoraPOO(op);

Console.Write("Digite o primeiro número: ");
calc.Numero1 = double.Parse(Console.ReadLine()!);

if (op != "r") 
{
    Console.Write("Digite o segundo número: ");
    calc.Numero2 = double.Parse(Console.ReadLine()!);
}

try 
{
    double resultado = calc.Calcular();
    Console.WriteLine($"\nResultado: {resultado}");
}
catch (Exception ex) 
{
    Console.WriteLine($"\n{ex.Message}");
}
1 resposta

Oi, Maicon! Como vai?

Agradeço por compartilhar.

Gostei da sua solução, importante notar como você aplicou orientação a objetos ao encapsular as operações na classe e usou o switch para centralizar a lógica, o que deixa o código mais organizado e fácil de manter. Isso mostra um bom entendimento do conceito de responsabilidade da classe.

Continue explorando esse tipo de estrutura, pois ela ajuda bastante quando o projeto cresce.

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