0
respostas

Minha resolução

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

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora