Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Desafio - Interface Impostos

Segue uma solução possível do desafio proposto:

Interface:

public interface Tributavel {
        double getBaseCalculo();
}

Conta Corrente:

public class ContaCorrente extends Conta implements Tributavel{

    public ContaCorrente (int agencia, int numero) {
        super(agencia, numero);
    }

    @Override 
    public boolean sacar(double valor) {
        double taxaDeSaque = 0.2;
        double saqueTotal = taxaDeSaque + valor;
        return super.sacar(saqueTotal);
    }

    @Override
    public double getBaseCalculo() {
        return super.getSaldo();
    }

}

Investimentos:

public class Investimento extends Conta implements Tributavel {

    public Investimento (int agencia, int numero) {
        super(agencia, numero);
    }

    @Override
    public double getBaseCalculo() {
        return super.getSaldo();
    }

}

Calculador Imposto:

public class CalculadorImposto {

private double aliquotaContaCorrente = 0.1;
private double aliquotaInvestimento = 0.15;
private double valorImpostoTotal;

public double calculaImposto (Tributavel tributavel) {
    double imposto = 0;

        if (tributavel instanceof ContaCorrente) {
            imposto += tributavel.getBaseCalculo() * aliquotaContaCorrente;
            valorImpostoTotal += imposto;
        } else if (tributavel instanceof Investimento) {
            imposto += tributavel.getBaseCalculo() * aliquotaInvestimento;
            valorImpostoTotal += imposto;
        } else {
            return 0;
        }

        return imposto;
    }

    public double getImposto() {
        return valorImpostoTotal;
    }

}
1 resposta
solução!

Bom dia!

Sua resolução ficou excelente! Você fez um ótimo uso do aprendizado.

Parabéns pelo empenho nos estudos e continue praticando.

Bons estudos!