2
respostas

Acrescentando imposto sobre a conta poupança e aplicação financeira, e ainda acrescentando a classe formatando

import java.text.NumberFormat;

public class Formatando {

    String numeroFormatado;

    public String getNumeroFormatado(double valor) {
        return this.numeroFormatado = NumberFormat.getCurrencyInstance().format(valor);
    }

}
public class ContaPoupanca extends Conta implements Tributavel{

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

    @Override
    public void deposita(double valor) {
        super.saldo += valor;    
    }

    @Override
    public double getValorImposto() {
        // TODO Auto-generated method stub
        return super.saldo * 0.050;
    }

}
public class AplicacaoFinanceira extends Conta implements Tributavel{

    public AplicacaoFinanceira(int agencia, int numero) {
        super(agencia, numero);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void deposita(double valor) {
        // TODO Auto-generated method stub
        super.saldo += valor;    

    }

    @Override
    public double getValorImposto() {
        // TODO Auto-generated method stub
        return super.saldo * 0.2;
    }


}
public class testeTributaveis {

    public static void main(String[] args) {

        Cliente cliente = new Cliente();
        cliente.setNome("JOÃO APARECIDO");

        ContaCorrente cc = new ContaCorrente(222, 333);
        cc.deposita(100.0);

        SeguroDeVida seguro = new SeguroDeVida();

        ContaPoupanca pp = new ContaPoupanca(222,333);
        pp.deposita(500);

        AplicacaoFinanceira af = new AplicacaoFinanceira(222,333);
        af.deposita(10000);

        Formatando fr = new Formatando();

        CalculadorDeImposto calc = new CalculadorDeImposto();
        calc.registra(cc);
        System.out.println("Cálculo dos impostos sobre as Contas do cliente :" + cliente.getNome() + "   AGENCIA :" + cc.getAgencia() + "   CONTA :" + cc.getNumero());
        System.out.println("-----------------------------------------------------------------------------------------------------------");
        System.out.println("Imposto sobre a Conta Corrente: " + fr.getNumeroFormatado(cc.getValorImposto()));
        calc.registra(seguro);
        System.out.println("Imposto sobre o Seguro: " + fr.getNumeroFormatado(seguro.getValorImposto()));
        calc.registra(pp);
        System.out.println("Imposto sobre a Conta Poupança: " + fr.getNumeroFormatado(pp.getValorImposto()));
        calc.registra(af);
        System.out.println("Imposto sobre a Aplicação Financeira: " + fr.getNumeroFormatado(af.getValorImposto()));
        System.out.println("---------------------------------");
        System.out.println("TOTAL DO IMPOSTO : " + fr.getNumeroFormatado(calc.getTotalImposto()));

    }
}
2 respostas

Oiee Daniella, tudo bem?

Obrigada por compartilhar seu código com a gente, muito legal ter criado uma nova classe para formatação! Ter feito isso ajuda num princípio muito seguido na orientação a objetos, que é o Princípio da Responsabilidade Única, ou Single Responsibility Principle. Você pode ver um pouco mais sobre isso, caso se interessar, no curso de SOLID com Java

Abraços e bons estudos!

No caso do NumberFormat, se ao invés eu utilizar o printf para formartação de casas decimais, eu estou derespeitando os principios do SOLID?