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

Sobrescrição da função Transferir na Conta

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?

2 respostas

Fala ai Bruno, tudo bem? Muito bem observado e uma ótima solução, parabéns.

Abraços e bons estudos.

solução!

Valeu Matheus, o bom é que deu pra entender melhor como funciona a hierarquia de funções entre instâncias!