1
resposta

02 Aplicando Polimorfismo

Não consigo entender a necessidade da variável 'private double soma', na aula 02 Aplicando Polimorfismo. Alguém pode me ajudar por favor?

1 resposta

Olá Luan, tudo bem?

Acredito que a variável que você se refere é do seguinte trecho de código certo?

public class ControleBonificacao {
    private double soma;

    public void registra(Funcionario f) {
        double boni = f.getBonificacao();        
        this.soma = this.soma + boni;
    }

    public double getSoma() {
        return soma;
    }
}

De uma forma resumida, essa variável vai receber a soma das bonificações.

Quando no arquivo TesteReferencias nós criamos instancias de Gerente, Funcionario e EditorVideo, colocamos salários para eles certo?

Com base no salário deles é calculada a bonificação individual de cada um. O gerente recebe 1 salário, o funcionário recebe 5% e o editor de vídeo 100 reais. Isso significa que toda vez que a gente usar controle.registra() vamos estar incrementando aquela variável soma.

No código da aula:

public class TesteReferencias {
    public static void main(String[] args) {
        Gerente g1 = new Gerente();

        g1.setNome("Felipe");
        g1.setSalario(5000.90);

        Funcionario f1 = new Funcionario();

        f1.setNome("Nicolas");
        f1.setSalario(3500.99);

        EditorVideo ev = new EditorVideo();

        ev.setNome("Eduarda");
        ev.setSalario(2500.50);

        ControleBonificacao controle = new ControleBonificacao();

        controle.registra(g1);
        controle.registra(f1);
        controle.registra(ev);

        System.out.println(controle.getSoma());
    }
}

Veja, quando executamos essas 3 linhas de código, estamos pegando a bonificação de cada funcionário e incrementando naquela variável soma.

controle.registra(g1); // Incrementa em soma a bonificação do gerente (que é 1 salário de 5000).
controle.registra(f1); // Incrementa em soma a bonificação do funcionário genérico (que é 5%).
controle.registra(ev); // Incrementa em soma a bonificação do editor de vídeo (que é de 100 reais).

No final, nos usamos o método getSoma() que imprime todos os valores incrementados a variável soma:

System.out.println(controle.getSoma());

Espero que minha explicação tenha ficado mais claro. Forte abraço e bons estudos!