Olá. Implementei uma nova parte do código, pensando em uma possível alteração das regras de tributação e não ter que sair mexendo depois em TODOS os possíveis tributáveis. Mas gostaria de saber se, da forma que eu fiz, seria possível acessar essa classe sem ser uma conta Tributável. Ex: conta poupança calcular imposto, sem ser necessário.
Conta Corrente
public class ContaCorrente extends Conta implements Tributavel{
public ContaCorrente(int agencia, int numero) {
super(agencia, numero);
}
@Override
public boolean saca(double valor) {
valor += 0.20;
return super.saca(valor);
}
@Override
public void deposita(double valor) {
super.saldo += valor;
}
@Override
public double getValorTributavel() {
return super.saldo;
}
}
Seguro de Vida
public class SeguroDeVida implements Tributavel {
@Override
public double getValorTributavel() {
return 42;
}
}
Calculador de Imposto
public class CalculadorDeImposto {
private double totalImposto;
public void registra(Tributavel t) {
TributadorUtil ir = new TributadorUtil();
double valor = t.getValorTributavel();
valor = ir.imposto(valor);
this.totalImposto += valor;
}
public double getTotalImposto() {
return totalImposto;
}
}
Tributador Util
public class TributadorUtil {
public double imposto(double saldo) {
System.out.println("Valor recebido: " + saldo);
if(saldo<= 1903.98) {
System.out.println("Isento");
return 0;
}else if(saldo >1903.98 && saldo <= 2826.65) {
saldo *= 0.075;
System.out.println("Tribudado em 7.5%: " + saldo);
return saldo;
}else if(saldo >2826.65 && saldo <= 3751.05) {
saldo *= 0.15;
System.out.println("Tribudado em 15%: " + saldo);
return saldo;
}else if(saldo >3751.05 && saldo <= 4664.68) {
saldo *= 0.225;
System.out.println("Tribudado em 22.5%: " + saldo);
return saldo;
}else{
saldo *= 0.275;
System.out.println("Tribudado em 27.5%: " + saldo);
return saldo;
}
}
}
Esse código funcionou para me passar o valor de imposto, mas não sei se é gambiarra ou se dessa forma está correta. Aguardo retorno.