ContaBancaria.cs
internal class ContaBancaria(string titular, double saldoInicial)
{
private double _saldo = saldoInicial;
public string Titular { get; } = titular;
public double Saldo => _saldo;
public void Sacar(double valor)
{
if (!SegurancaConta.ValidarSaque(valor))
{
Console.WriteLine("Saque negado pela política de segurança.");
return;
}
if (valor > _saldo)
{
Console.WriteLine("Saque não realizado por saldo insuficiente.");
return;
}
_saldo -= valor;
Console.WriteLine("Saque realizado com sucesso.");
}
}
SegurancaConta.cs
internal static class SegurancaConta
{
public static readonly double _valorMaxSaque = 1000;
public static bool ValidarSaque(double valor)
=> valor > 0 && valor <= _valorMaxSaque;
}
Program.cs
ContaBancaria conta = new("Carlos Silva", 2500);
conta.Sacar(1500); // inválido - acima do limíte permitido
conta.Sacar(-50); // inválido - valor negativo
conta.Sacar(1000); // válido - saldo agora é R$ 1500
conta.Sacar(1000); // válido - saldo agora é R$ 500
conta.Sacar(1000); // inválido - saldo insuficiente
conta.Sacar(200); // inválido - saldo agora é R$300
Console.WriteLine($"Saldo atual: {conta.Saldo:C}");