Tudo Matheus, valeu por responder rápido.
Explicando melhor o problema: No sistema de banco que estamos criando existe a classe abstrata Conta, que carrega funções gerais como Sacar e Depositar. A questão é sobre qual o melhor jeito de definir as diferenças entre os tipos de contas, nesse caso especificamente sobre o método Sacar.
A solução do instrutor foi criar um método Saque novo para cada tipo de conta (sobrescrevendo o método herdado de Conta) com as alterações necessárias:
https://github.com/alura-cursos/js-heranca-polimorfismo/blob/aula3/ContaCorrente.js
Mas pensei que poderia ser mais eficiente adaptar o método Saque da classe Conta para suportar variáveis e especifica-las em cada tipo de conta, ficando assim:
//Meu método saque dentro da classe Conta
saque(valor) {
if (valor < 0 + this.saqueMin) return;
const comissao = valor * this.taxaSaque;
const saque = valor - comissao;
//Ignore que estou roubando dinheiro
//na linha abaixo kkkkkkk
this._saldo = Number((this._saldo - saque).toFixed(2));
return saque;
}
//Cada tipo de conta tem suas próprias definições dessas
// variáveis no meu codigo
class ContaPoupanca extends Conta {
constructor(agencia) {
super(agencia),
this.depostioMin = 0,
this.saqueMin = 50,
this.taxaDeposito = 0.02,
this.taxaSaque = 0,
this.juros = 0.015
}
}
Meu jeito funciona e me parece ser mais fácil de entender. Será que na verdade eu fiz uma aberração ineficiente da programação ou isso é viável no mundo real?