Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Não consegui entender a lógica do exercício 1 no curso curso de C# e seus Fundamentos, no exercício do capítulo Mão na Massa - OO.

Olá pessoal. Eu vi o exercício para gerar a condição maior/menor de idade, mas não consegui entender a lógica de porque tornar o void 'Saca' em um método bool pra retornar se foi sacado ou não.

Abaixo eu mostro como fiz o código da primeira vez. Ele não considera retorno se o saque foi feito ou não, na verdade se ele validar todas as condições e o cliente for maior de idade, então ele saca. No caso dele ser menor de idade, somente saca 200. Ele não retorna verdadeiro ou falso, mas executa o código corretamente.

Porque o método do bool é o mais indicado?

public void Saca(double valor)
        {
            if(valor > 0 && valor <= this.saldo)
            {
                if (this.titular.EhMaiorDeIdade())
                {
                    this.saldo -= valor;
                }else
                {
                    this.saldo -= 200.0;
                }

            }    
        }
2 respostas

Do jeito que tu ta fazendo quando o cliente não for maior de idade o saldo vai decrementar de 200 reais sempre, não importando o quanto o cliente quer sacar. Tu poderia ter feito um método pra saque que não retornasse booleano, mas nesse caso tua lógica foi errada.

solução!

Olá Felipe,

de fato sua lógica altera o valor do saldo de acordo com as validações se ele tem dinheiro e é maior de idade. O retorno booleano na verdade é para quem chama o método. Por exemplo, se no meu button1_Click eu tivesse o seguinte código:

private void button1_Click(object sender, EventArgs e)
{
    Conta lucas = new Conta();
    lucas.saldo = 1000.0;
    lucas.Saca(1500.0);
}

Com o retorno sendo void, daria para o meu botão mostrar para o meu usuário se o saque foi efetuado com sucesso ou se o saldo estava insuficiente? Mas retornando um bool, o que eu poderia fazer agora no meu button1_Click para mostrar essas mensagens?