namespace PraticandoEncapsulamento.Classes
{
internal class ContaBancaria
{
//Atributos
public string Titular { get; }
private double _saldo; // agora é um campo de verdade
public double Saldo => _saldo; // propriedade somente leitura
private SegurancaConta segurancaConta = new SegurancaConta();
//Construtor
public ContaBancaria(string titular, double saldo)
{
Titular = titular;
_saldo = saldo;
}
//Métodos
public void Sacar(double valor)
{
bool validacao = segurancaConta.ValidarSaque(valor);
if (validacao)
{
_saldo -= valor; // altera o campo privado corretamente
Console.WriteLine($"Saque realizado com sucesso.\r\nSaldo atual: R$ {Saldo}");
}
else
{
Console.WriteLine("Saque negado pela política de segurança.");
}
}
}
}
namespace PraticandoEncapsulamento.Classes;
internal class SegurancaConta
{
//Métodos
public bool ValidarSaque(double valor)
{
if (valor >= 1000)
{
return false;
}
else
{
return true;
}
}
}
using PraticandoEncapsulamento.Classes;
ContaBancaria conta = new ContaBancaria("Carlos Silva", 2500);
conta.Sacar(1500); // inválido
conta.Sacar(800); // válido