Estou acompanhando o curso e percebi que quando fazia uma transferencia da conta corrente a taxa do saque era aplicado a transferencia também. Segue o código.
export class Conta{
constructor(saldoInicial, cliente, agencia){
this._saldo = saldoInicial;
this._cliente = cliente;
this._agencia = agencia;
}
set cliente(novoValor){
if(novoValor instanceof Cliente){
this._cliente = novoValor;
}
}
get cliente(){
return this._cliente;
}
get saldo(){
return this._saldo;
}
sacar(valor){
const taxa = 1;
return this._sacar(valor,taxa);
}
_sacar(valor, taxa){
const valorSacado = taxa * valor;
if(this._saldo >= valorSacado){
this._saldo -= valorSacado;
return valor;
}
return 0;
}
depositar(valor){
if(valor <= 0)
{
return;
}
this._saldo += valor;
}
transferir(valor, conta){
const taxa = 1;
this._transferir(valor, conta, taxa);
}
}
Conta corrente
import { Conta } from "./Conta.js";
export class ContaCorrente extends Conta{
static numeroDeContas = 0;
// #saldo =0 https://github.com/tc39/proposal-class-fields#private-fields
constructor(cliente,agencia){
super(0, cliente, agencia)
ContaCorrente.numeroDeContas += 1;
}
sacar(valor){
const taxa = 1.1;
return super._sacar(valor,taxa);
}
transferir(valor,conta){
const taxa = 1;
//this._transferir(valor,conta,taxa)
this.sacarTransferencia(valor);
conta.depositar(valor);
}
}
Com o código assim toda vez que vai fazer uma transferencia ele utiliza o código de saque e deposito, porem o código de saque tem a taxa aplicada na conta corrente. Para solucionar isso eu acrescentei uma função de saque especifico para transferencia. Teria alguma outra maneira mais simples?
sacarTransferencia(valor){
const valorSacado = valor;
if(this._saldo>= valorSacado){
this._saldo -=valorSacado;
return valor;
}
return 0;
}