Boa noite pessoal. Fiz a implementação dos tributáveis antes de ver a solução do professor, daí o meu código ficou um pouco diferente, por exemplo: Coloquei o imposto de 1% para todos. Porém do jeito que está, para visualizar o total do imposto recolhido, tenho que fazer isto a partir de um objeto instanciado. segue o código:
public interface Tributavel {
double getValorImposto();
}
public class CalculadorImposto {
private static double totalImposto;
public double getValorImposto(double valorACalcular) {
double valorDoImposto = valorACalcular*0.01;
totalImposto+=valorDoImposto;
return valorDoImposto;
}
public double getTotalImposto() {
return CalculadorImposto.totalImposto;
}
}
public class ContaCorrente extends Conta implements Tributavel{
CalculadorImposto calculador;
public ContaCorrente(int agencia, int numero) {
super(agencia, numero);
calculador = new CalculadorImposto();
}
@Override
public boolean saca(double valor) {
double valorASacar = valor + .2;
return super.saca(valorASacar);
}
@Override
public void deposita(double valor) {
super.saldo += valor;
}
@Override
public double getValorImposto() {
return this.calculador.getValorImposto(super.saldo);
}
}
public class SeguroDeVida implements Tributavel {
CalculadorImposto calculador;
public SeguroDeVida() {
calculador = new CalculadorImposto();
}
private double valorDoSeguro;
public void setValorDoSeguro(double valorDoSeguro) {
this.valorDoSeguro = valorDoSeguro;
}
public double getValorDoSeguro() {
return valorDoSeguro;
}
@Override
public double getValorImposto() {
return calculador.getValorImposto(valorDoSeguro);
}
}
public class AcaoBolsa implements Tributavel {
CalculadorImposto calculador;
public AcaoBolsa() {
calculador = new CalculadorImposto();
}
private double saldoDaAcao;
public void setSaldoDaAcao(double saldoDaAcao) {
this.saldoDaAcao = saldoDaAcao;
}
public double getSaldoDaAcao() {
return this.saldoDaAcao;
}
@Override
public double getValorImposto() {
return calculador.getValorImposto(saldoDaAcao);
}
}
public class TestaConta {
public static void main(String[] args) {
ContaCorrente contaDoJoao = new ContaCorrente(2902, 258850);
contaDoJoao.deposita(500);
System.out.println("Saldo da conta do joão: " + contaDoJoao.getSaldo());
System.out.println("Valor do imposto da conta do joao: "+ contaDoJoao.getValorImposto());
AcaoBolsa acaoDoNenem = new AcaoBolsa();
acaoDoNenem.setSaldoDaAcao(450000);
System.out.println("Acao do neném: " + acaoDoNenem.getSaldoDaAcao());
System.out.println("Imposto da acao do neném: " + acaoDoNenem.getValorImposto());
SeguroDeVida seguroDaKatrine = new SeguroDeVida();
seguroDaKatrine.setValorDoSeguro(980000);
System.out.println("Valor do seguro: " + seguroDaKatrine.getValorDoSeguro());
System.out.println("Valor do imposto do seguro: " + seguroDaKatrine.getValorImposto());
System.out.println("Valor total do imposto: " + seguroDaKatrine.calculador.getTotalImposto());
Como visto, tive que acessar o valor total do imposto a partir do seguroDaKatrine
. Há alguma forma de acessar o total sem fazer isto?