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}");
}