4
respostas

Polimorfismo - soma aparentemente não considera a bonificação dos 3 funcionarios

Olá, fiquei com uma dúvida a respeito da soma que é aacumulação das 3 bonificações: de Gerente, Funcionario e Editor de Video, que deveriam ser respectivamente, 5250.0, 100.0 e 225. Assim, a soma deveria ser 5575 e não 5475. Ou não? Obrigado

4 respostas

Oi Alexandre, só com os valores complica um pouco para a gente dar uma opinião. Consegue colocar seu código aqui?

sugestão de alteração para a classe testa referencias... na classe ControleBonificacao crie o metodo para limpar a soma

public void limpaSoma() {
        this.soma = 0;

pelo que entendi a cada registro de bonificação, a classe ControleBonificação estava somando a bonificação anterior... assim o ultimo registro que seria do editor de video tinha a soma da bonificação do gerente...

inclua esse metodo de limpar antes de chamar o registra gerente ou editor de video

    public static void main(String[] args) {
        ControleBonificacao controle = new ControleBonificacao();

        Funcionario f = new Funcionario();
        f.setSalario(2000.0);
        controle.registra(f);                    //funcionario recebe 5% do salario
        System.out.println("Salario funcionario: R$" +f.getSalario());
        System.out.println("Bonificação funcionario: R$" +controle.getSoma());

        Gerente g1 = new Gerente();
        g1.setNome("Marcos");
        g1.setSalario(5000.0);
        controle.limpaSoma();//gerente recebe 5% de bonif por ser funcionario + o valor do salario dele
        controle.registra(g1);
        System.out.println("Salario gerente: R$" +g1.getSalario());
        System.out.println("Bonificação gerente: R$" +controle.getSoma());

        EditorVideo ev = new EditorVideo();
        ev.setSalario(2500.0);
        controle.limpaSoma();//editor video recebe 5% de bonif por ser funcionario +100
        controle.registra(ev);
        System.out.println("Salario editor video: R$" +ev.getSalario());
        System.out.println("bonificação editor video: R$" +controle.getSoma());

Oi Alexandre,

vc tem razao, há uma diferença na bonificação, e o valor correta seria: R$ 5575,00

No entanto, o problema é outro. No video, por volta das 8min, eu estou criando um objeto do tipo EditorVideo, mas não estou inicializando o salario dele, pois uso ainda a referencia do Funcionario:

EditorVideo ev = new EditorVideo();
f.setSalario(2500.0); //aqui está errado, pois uso f

Tudo bem? Vou ver se podemos corrigir isso na edição.

Obrigado por relatar.

Abs, Nico

Oi Alexandre,

Caso a resposta do Nico não tenha sido clara, vou tentar explicar um pouco melhor.

Provavelmente você estava seguindo os passos que o professor estava passando no vídeo, porém, no vídeo "Aplicando Polimorfismo" no exato momento 7:30m, o professor cria um instancia da classe EditorVideo na variável "ev", porém, na hora de setar o salário, ele errou e setou na variável "f". Por isso a soma total não bate corretamente.