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

Minha lógica está correta?

@Override
    public double getImposto() {
        // TODO Auto-generated method stub

        double taxa = super.saldo * 0.01;
        super.saldo -= taxa; // O nico não fez essa linha de código aqui
        return taxa;

    }

Sem essa linha de código, o valor do imposto não seria retirado do saldo. Estou certo?

1 resposta
solução!

Oie Andrew, tudo bem contigo?

O Nico não fez desse jeito porque o objetivo desse método não era retirar o imposto do saldo mas sim apenas pegar o valor do imposto e devolver ele. Tanto que depois esse método é chamado na "classe CalculadorDeImposto", pois ele devolve o valor do imposto e essa classe faz a soma de todo o imposto que deve ser pago da conta corrente e do seguro de vida.

Classe CalculadorDeImposto

public class CalculadorDeImposto {

    private double totalImposto;

    public void registra(Tributavel t) {
        double valor = t.getValorImposto(); // getValorImposto é chamado e a variável valor guarda o retorno desse método.
        this.totalImposto += valor; // é feito a soma do atributo totalImposto com a variável valor
    }

    public double getTotalImposto() {
        return totalImposto; // retorna o total de imposto a ser pago, esse cálculo é feito da soma dos impostos de cada objeto que implementa a interface tributável que entra como parâmetro no método registra
    }

}

Classe TesteTributaveis

public class TesteTributaveis {

    public static void main(String[] args) {
        ContaCorrente cc= new ContaCorrente(222, 333);
        cc.deposita(100.0);

        SeguroDeVida seguro = new SeguroDeVida();

        CalculadorDeImposto calc = new CalculadorDeImposto();
        calc.registra(cc); // o objeto cc é registrado no calculadorDeImposto, e dentro desse calculadorDeImposto, ele pega o valor que retorna do método getValorImposto e faz o calcula do total do imposto a ser pago.
        calc.registra(seguro); o objeto seguro é registrado no calculadorDeImposto, e dentro desse calculadorDeImposto, ele pega o valor que retorna do método getValorImposto e faz o calcula do total do imposto a ser pago.

        System.out.println(calc.getTotalImposto()); // mostra o total de imposto a ser pago, esse cálculo é feito da soma do imposto da conta corrente (cc) e do seguro de vida (seguro)

    }

}

Concluindo, se você deseja descontar o imposto direto do saldo, sua lógica estaria correta sim, só que seria desnecessário ela retornar algo, podendo ser um método void, e claro, seria legal se você mudasse o nome do método, pois os getters sempre são usados apenas para retornar o valor de um atributo e não fazer uma lógica de desconto.

Espero que eu tenha ajudado, qualquer outra dúvida fico a disposição :)

Bons estudos!