Fala pessoal,
Usando percebi um problema: quando faço uma transferência de uma conta corrente (com taxa de 10%) para outra conta, onde a função transferência deveria ser chamada na instância mãe, ele está puxando a taxa de 10% do método saldo da conta corrente, com a taxa.
Este é o código na instância filho (AccConta):
import {CConta} from "./CConta.js";
export class AccConta extends CConta {
static numAccConta = 0;
constructor(agencia, nome, cpf){
super(agencia, nome, cpf);
AccConta.numAccConta++;
}
sacar(value){ // essas function dentro dos objetos podem ser aplicado a todas as instâncias criadas, desde que use o this.
const taxa = 1.1
return super._sacar(value, taxa);
}
}
Como estava o código na instância mãe (CConta):
sacar(value) {
const taxa = 1;
return this._sacar(value, taxa);
}
_sacar(value, taxa){
const totalValor = value * taxa;
if (this._saldo >= totalValor) {
this._saldo -= totalValor;
return totalValor;
}
return 0;
}
depositar(value) {
if (value > 0) {
this._saldo += value;
}
}
transferir(value, conta) {
const valorTransferido = this.sacar(value);
conta.depositar(valorTransferido);
}
Aqui o resultado é que quando transfiro dinheiro de uma conta corrente pra uma outra ele cobra a taxa de 10%.
Resolvi o problema escrevendo os métodos na instância mãe (CConta) desse jeito:
sacar(value) {
const taxa = 1;
return this._sacar(value, taxa);
}
_sacar(value, taxa){
const totalValor = value * taxa;
if (this._saldo >= totalValor) {
this._saldo -= totalValor;
return totalValor;
}
return 0;
}
depositar(value) {
if (value > 0) {
this._saldo += value;
}
}
transferir(value, conta) {
const taxa = 1;
const valorTransferido = this._sacar(value, taxa);
conta.depositar(valorTransferido);
}
Aqui ele já aplica o a taxa só quando é saque mesmo, quando é transferência entre contas do banco ele não aplica... Mas queria saber se estou fazendo algo errado, pra ele estar puxando a função da instância filho ao invés da mãe?