Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Método privado _sacar(valor, taxa) JavaScript Interface e Herança?

Olá pessoal. Terminei de ver a aula acerca do conceito de privado e protegido e para exemplificar o professor criou um método privado sacar, cujo objetivo é resolver uma especificidade de saque da classe ContaCorrente em relação a classe Conta. O método sacar da classe conta não possui taxas, mas a regra do negócio é que a classe ContaCorrente que estende a classe Conta tenha uma taxa de 10%. Mas eu resolvi de um jeito diferente, tive a ideia quando ele explicou o que o super faz. Então, ao invés de eu criar um novo método na super classe eu fiz o seguinte:

sacar(valor){
        let taxa = 1.1;
        return super.sacar(valor*taxa);
 }

// Na super classe
sacar(valor){
    if (this._saldo >= valor){
        this._saldo -= valor;
                return valor;
        }
        return 0;
}

A solução do professor:

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

       return  0;
 }

Então eis a questão: Tem problema eu deixar do jeito que eu fiz? Existe algum erro conceitual de boas práticas, algo assim? Realmente em dúvida aqui...

1 resposta
solução!

Fala ai Jefferson, tudo bem? Não tem problemas fazer dessa forma, mas, acredito estar violando alguns conceitos de encapsulamento e boas práticas.

Isso porque o método da classe mãe que deveria ser simples e genérico passa a ter um parâmetro onde pode abrir brecha para pessoas modificarem o comportamento e passarem informações indevidas.

Da forma feita pelo instrutor a classe Conta fica mais blindada e a classe que precise de um comportamento diferente apenas aplica esse comportamento em si própria (isolando a responsabilidade).

Espero ter ajudado.