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

Dúvida no Ex. 3 da Aula 4 - Interfaces

Olá, fiz a implementação da classe TestaGerenciadorDeImpostoDeRenda e rodou, porem não traz os resultado No momento de adicionar o tributavel mas sim a variavel de ambiente, por que isso acontece?

public class GerenciadorDeImpostoDeRenda {
    private double total;

    public void adiciona(Tributavel t) {
        System.out.println("Adicionando Tributavel: " + t);

        this.total = t.calculaTributos();
    }

    public double getTotal(){
        return this.total;
    }

}
public class TestaGerenciadoDeImpostoDeRenda {
    public static void main(String[] args) {
        GerenciadorDeImpostoDeRenda gerenciador = new GerenciadorDeImpostoDeRenda();

        SeguroDeVida seguro = new SeguroDeVida();
        gerenciador.adiciona(seguro);

        ContaCorrente cc = new ContaCorrente();
        cc.deposita(100);
        gerenciador.adiciona(cc);

        System.out.println(gerenciador.getTotal());

    }
}
2 respostas
solução!

Olá Matheus! O que exatamente não rodou no seu código : A saída do método getTotal() da classe GerenciadorDeImpostoDeRenda?

Inicialmente olhando por aqui, vejo que não está acumulando os valores de cada método calculaTributos() dos objeto do tipo Tributavel no atributo total da classe GerenciadorDeImpostoDeRenda (this.total = t.calculaTributos();.

Ao atribuir somente o "igual", você vai estar apenas atribuindo um valor diferente a cada chamada do método adiciona().

Para acumular todos os valores de cada objeto Tributavel adicionado, troque a sua implementação por :

this.total += t.calculaTributos()

ao trocar o '=" por "+=", você estará acumulando todos os valores dos objetos Tributavel passados como argumento para o método adiciona() da classe GerenciadorDeImpostoDeRenda. Você também pode fazer da seguinte maneira:

this.total = this.total + t.calculaTributos();

Olá Rodrigo! Era exatamente esse o erro, a forma de atribuição no meu código esta incorreto mesmo. Ajustei para += e funcionou.