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;
}
}