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

Tentei fazer uma estripulia mas não consegui.

Tentei modificar o construtor da classe contaPoupança pois obrigo em outra classe mãe (superClasse) Conta em vez de acionar o método deposita com a seguinte ação dentro dele:

this.saldo += valorDepositado - 0.10;

No construtor da conta poupança ficando assim:

public ContaPoupanca(double saldoInicial) {

        super(saldoInicial);

    /*Aqui chamei o método deposita dentro do construtor.
    já tentei adidionar this.saldo += valorDepositado - 0.10; no construtor mas não rola
    O calculo é feito de forma incorreta o resultado sai diferente se tivesse passado o saldo inicial de forma não obrigatório utilizando o método deposita
Se passo o saldo inicial pelo método deposita funciona perfeitamente, por favor galera me ajudem.
*/

        deposita(saldoInicial);

        // TODO Auto-generated constructor stub

    }

Segue minha classe conta:



/**
 * 
 * @author Renato
 * @Date 25/07/2017
 *
 */

public class Conta {

    protected double saldo;


    public Conta(double saldoInicial) {

        this.saldo = saldoInicial;

    }

    public void atualiza(double taxa) {

        this.saldo += this.saldo * taxa;

    }

    public double getSaldo() {
        return this.saldo;
    }

    public void deposita(double valorDepositado) {

        this.saldo += valorDepositado;

    }

    public void saca(double valorSacado) {

        if (valorSacado <= this.saldo) {

            this.saldo -= valorSacado;

        } else {

            System.out.println("Saldo Insuficiente para saque.");

        }

    }

    void mostra() {

        System.out.println("O saldo é de: " + getSaldo());

    }
}

E minha main:



public class TesteAtualizadorDeContas {

    public static void main(String[] args) {

        Conta c = new Conta(1000);
        Conta cc = new ContaCorrente(1000);
        Conta cp = new ContaPoupanca(1000);




        AtualizadorDeContas atualizador = new AtualizadorDeContas(0.01);

        atualizador.roda(c);
        atualizador.roda(cc);
        atualizador.roda(cp);

        System.out.println("O saldo total é = " + atualizador.getSaldoTotal());

    }
}
3 respostas

Opa, o que aconteceu?

Ao usar o construtor para passar o saldo inicial o calculo sai com os valores incorreto, mas se eu passo o saldo inicial pelo método deposita() funciona normalmente quero saber o porque o construtor não aceita e trabalha de forma correta neste caso... Só lembrando que estamos num cenário de herança com construtores...

solução!

Pessoal desculpem minha ignorância já entendi a forma correta e quando usar ou não um construtor... O correto é manter a exigência de se passar um saldo inicial mas sem nenhum tipo de calculo de desconto ou acréscimo . Identifiquei que no banco por exemplo quando abrimos uma conta temos obrigatoriamente que por uma valor inicial na conta e que esse valor não tem desconto nenhum e inclusive tem uma lei mal feita que fala sobre isso... desta forma não precisa efetuar este tipo de cálculo e sim no método deposita, valeu galera um forte abraço e obrigado a todos que responderam, estou amando entender mais sobre programação e quero respira-lá cada dia mais.