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

Dúvida no Ex. 4 da Aula 2 - Herança, reescrita e polimorfismo

Boa noite,

Os meus valores para c.getSaldo(), cc.getSaldo() e cp.getSaldo() está acusando os respectivos valores: 1100.0; 1200.0; 1299.87

Não estou conseguindo ver onde eu errei..

Agradeço desde já.

public class TestaContas {

    public static void main(String[] args){

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

        c.deposita(1000);
        cc.deposita(1000);
        cp.deposita(1000);

        c.atualiza(0.1);
        cc.atualiza(0.1);
        cp.atualiza(0.1);

        System.out.println(c.getSaldo());
        System.out.println(cc.getSaldo());
        System.out.println(cp.getSaldo());
    }
}

public class Conta {

    protected double saldo;

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

    public void deposita(double valor){
        this.saldo += valor;
    }

    public void saca(double valor){
        this.saldo = this.saldo - valor;
    }

    public void atualiza(double taxa){
        this.saldo += this.saldo * taxa;
    }
}

public class ContaCorrente extends Conta{

    @Override
    public void atualiza(double taxa){
        this.saldo += this.saldo * taxa * 2;
    }
}

public class ContaPoupanca extends Conta{

    @Override
    public void atualiza(double taxa){
        this.saldo += this.saldo * taxa * 3;
    }

    @Override
    public void deposita(double valor){
        this.saldo += valor - 0.10;
    }
}
5 respostas

Lucas na verdade não tem problema, os valores estão imprimindo corretamente de acordo com suas classes.

Vejamos a classe Conta:

// Instanciou a classe
Conta c = new Conta(); 

// Depositou 1000, saldo = 1000
c.deposita(1000); 

// Atualizou a conta passando 10% de taxa, saldo = 1100
// 1000 * 0.1 = 100
// 1000 + 100 = 1100
c.atualiza(0.1); 

System.out.println(c.getSaldo());

Vejamos a classe ContaCorrente:

// Instanciou a classe
ContaCorrente cc = new ContaCorrente();

// Depositou 1000, saldo = 1000
cc.deposita(1000);

// Atualizou a conta passando 10% de taxa, saldo = 1200
// 1000 * 0.1 = 100
// 100 * 2 =  200
// 1000 + 200 = 1200
cc.atualiza(0.1);

System.out.println(cc.getSaldo());

Vejamos a classe ContaPoupanca:

// Instanciou a classe
ContaPoupanca cp = new ContaPoupanca();

// Depositou 1000, saldo = 990
// 1000 - 10 = 990
cp.deposita(1000);

// Atualizou a conta passando 10% de taxa, saldo = 1200
// 990 * 0.1 = 99
// 99 * 3 =  297
// 990 + 297 = 1287
cp.atualiza(0.1);

System.out.println(cp.getSaldo());

Veja que existem diferenças entre seus métodos atualiza e deposita.

Espero ter ajudado.

Entendi, é que no final do exercício é apresentado os seguintes valores como resposta certa:

conta = 1010.0 conta corrente = 1020.0 conta poupança = 1029.897

Por isso estou um pouco confuso com os resultados que obtive.

solução!

É porque no exercício a taxa passada para o método atualiza foi de 1%, ou seja, 0.01.

No seu caso você esta passando 10%(0.1).

Tente mudar os códigos para 0.01 que deve chegar no mesmo resultado.

Nossa, realmente o erro estava na minha frente e eu nem percebi o "0" a mais kkkk

Obrigado Matheus, desculpa por esse erro bobo..

kkkk magina Lucas, todo erro é válido afinal não deixa de ser erro, todo dia me deparo com erros "bobos" onde eu perco um bom tempo para resolver.

Sempre que precisar não deixe de criar suas dúvidas.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software