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

Sobrescrever o código

Na aula o professor criou o seguinte código na classe Conta:

sacar(valor) {
    let taxa = 1;
    return this._sacar(valor, taxa)
}

_sacar(valor, taxa) {
    const valorSacado = taxa * valor;
    if(this._saldo >= valorSacado {
        this._saldo -= valorSacado;
        return valorSacado;
    }

    return 0;
}

Ou seja, ele criou um método privado com o código que seria repetido em outras classes e mais um método adicionando a taxa. Após isso, na classe ContaCorrente ele sobrescreveu o método sacar(), alterando a taxa para 1,1.

Eu fiz um pouco diferente, não criei o segundo método na classe Conta e apenas o primeiro método privado, e aí na classe ContaCorrente criei apenas um método herdando o código da classe Conta e adicionando uma taxa. Não sei se ficou claro, mas gostaria de saber se isso é uma má prática e eu deveria necessariamente criar um método na classe Conta e sobrescreve-lo na classe ContaCorrente.

Abaixo segue meu código:

Classe Conta:

_transferir(valor, conta, taxa) {
        if(this._saldo > valor) {
            this._saldo = this._saldo - (valor * taxa);
            conta.depositar(valor);
        }
    }

Classe ContaCorrente:

transferir(valor, conta) {
        let taxa = 1.1;
        this._transferir(valor, conta, taxa);
}

OBS: Adicionei taxa em transferências só pq pra mim faz mais sentido, rs.

2 respostas
solução!

Olá Matheus, tudo bem?

Ao meu ver, essa não seria uma má prática. A única questão é que todas as classes "filhas" da classe Conta que podem transferir, terão que ter o método "transferir" público.

Nesse caso, você também teria que criar o método tranferir para a ContaPoupanca, para ela chamar o método privado _tranferir da classe Conta.

Classe ContaPoupanca:

transferir(valor, conta) {
        let taxa = 1;
        this._transferir(valor, conta, taxa);
}

Espero ter ajudado ;)

Show! Faz todo sentido, Karina. Agora consegui entender melhor o motivo do professor ter criado o método sacar(). Obrigado!