2
respostas

Usando composição

Olá,

Criei um exercício baseado nas aulas de composição mas está acontecendo algo que não estou entendendo. Guardei toda a lógica que calcula o imposto numa classe que chamei de ImpostoUtil.java. Porém, quando invoco o método através da composição, um trecho do código é ignorado pelo compilador. Mas quando o coloco diretamente na classe sem fazer a delegação, tudo funciona perfeitamente. Seguem as classes:

Tributavel.java

public interface Tributavel {
    double getImposto();
}

ProdutoBancario.java

public abstract class ProdutoBancario {
    private int numero;
    private double saldo;

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

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

}

ImpostoUtil.java

public class ImpostoUtil extends ProdutoBancario {

    private double tributo;

    public double getTributo() {
        this.tributo = super.getSaldo() * 0.15 + 25.0;
        return tributo;

    }

}

AcaoDaBolsa.java (Usando composição)

public class AcaoDaBolsa extends ProdutoBancario implements Tributavel {

    private ImpostoUtil calculador;

    public AcaoDaBolsa() {
        this.calculador = new ImpostoUtil();
    }

    @Override
    public double getImposto() {
        return this.calculador.getTributo();
    }

}

SeguroDeVida.java (Implementando o cálculo diretamente na classe)

public class SeguroDeVida extends ProdutoBancario implements Tributavel {

    private double tributo;

    @Override
    public double getImposto() {
        return this.tributo = super.getSaldo() * 0.15 + 150.0;
    }

}

TestaTributo.java

public class TestaTributo {

    public static void main(String[] args) {

        AcaoDaBolsa acao = new AcaoDaBolsa();
        acao.deposita(800);

        SeguroDeVida seguro = new SeguroDeVida();
        seguro.deposita(500);

        System.out.println(acao.getImposto());
        System.out.println(seguro.getImposto());

    }

}

OUTPUT:

25.0
225.0
2 respostas

Oi William, vou ser sincero, não entendi o que está acontecendo. Olhei o código e realmente não vi nada de errado... Pode colocar o projeto no github e deixar o link aqui?

Beleza Alberto, aí vai: https://github.com/gigliozzi/JavaComposicao