1
resposta

Diferença no valor total da soma - Dúvida na proposta do vídeo - Java Polimorfismo - Aula 3 - Video 2

Eu entendi a idéia e a lógica do código, mas não o que foi proposto pelo video de trazer o total de bonificações. Quando foi criado a classe ControleBonificacao, eu tinha em mente que a classe TesteReferencia, retornaria o valor total de bonificações e não soma delas encima somente do valor do gerente. O que quero dizer: Gerente salário = 5000,00 - Com bonificação 5.250,00 Funcionário salario = 2000,00 - Com Bonificação 2.100,00 EditorVideo salario = 2500,00 - Com bonificação 2.725,00

Total de Bonificação seria de 575,00 somando as bonificações de cada funcionário.

Total no video: 5.475.00 sendo que na verdade é 5.575,00 (com 100 reais a menos). Toda bonificação está acumulada somente no Gerente sendo que cada profissional tem seu salário, deveria somar junto ao salário de cada funcionário.

Segue essa dúvida.... Obrigado

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;
    }
    
    public class TesteReferencias {

    public static void main(String[] args) {
        Gerente g1 = new Gerente();	
        g1.setNome("Marcos");
        String nome = g1.getNome();
        System.out.println(nome);
        
         g1.setSalario(5000.0);
        
        Funcionario f = new Funcionario();
        f.setSalario(2000.0);
        
        EditorVideo ev = new EditorVideo();
        f.setSalario(2500.0);
        
        ControleBonificacao controle = new ControleBonificacao();
        controle.registra(g1);
        controle.registra(f);
        controle.registra(ev);
        
        System.out.println(controle.getSoma());
    
    }

}
public class EditorVideo extends Funcionario {
    
    public double getBonificacao() {
        return super.getBonificacao() + 100;
    }
}
public class Gerente extends Funcionario {
    private int senha;
    
    
    
    public void setSenha(int senha) {
        this.senha = senha;
    }
    
    public boolean autentica(int senha) {
        if(this.senha == senha) {
            return true;
        }else {
            return false;
        }
    }
    
    public double getBonificacao() {
        //return super.getBonificacao() + super.salario;
        System.out.println("Chamando o método de bonificação do Gerente");
        return super.getBonificacao() + super.getSalario();
    }
        
}
public class Funcionario {
    private String nome;
    private String cpf;
    private double salario;
    //protected double salario;
    
    
    public Funcionario() {
        
    }
    
    public double getBonificacao() {
        return this.salario * 0.05;
    }
    
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public String getCpf() {
        return cpf;
    }
    public void setCpf(String cpf) {
        this.cpf = cpf;
    }
    public double getSalario() {
        return salario;
    }
    public void setSalario(double salario) {
        this.salario = salario;
    }
    
    
}
1 resposta

Oi Allan,

Tem um pequeno erro no seu código:

EditorVideo ev = new EditorVideo();
f.setSalario(2500.0);

deve ser ev.setSalario(2500.0)

abs, Nico