Olá a todos
Estava lendo no blog da Caelum sobre Como não aprender orientação a objetos: o excesso de ifs porém não entendi muito bem, no exemplo descrito na página:public double calculaBonus(Funcionario f) {
if (f.getCargo().equals("gerente")) {
return f.getVendasDoMes() * 0.05 + getSalario() * 0.1;
} else if (f.getCargo().equals("diretor")) {
return f.getVendasDoMes() * 0.05 + getSalario() * 0.2 + (Today.isDecember() ? getSalario() : 0);
} else {
return f.getVendasDoMes() * 0.01;
}
}
/*<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>*/
class Funcionario {
// outros atributos e metodos aqui
public double getBonus() {
return vendasDoMes * 0.01;
}
}
/*<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>*/
class Gerente extends Funcionario {
// outros atributos e metodos aqui
public double getBonus() {
return vendasDoMes * 0.05 + getSalario() * 0.1;
}
}
Não haverá necessidade de ifs, já que essa descoberta de qual método executar é feita pela máquina virtual: funcionario.getBonus()Não consegui entender, alguém poderia me explicar? Como consigo calcular o bônus de gerente ou de diretor sem fazer nenhum if? Como a classe Map e HashMap poderiam me ajudar (nunca as utilizei)? E como a interface também poderia me ajudar nesse tratamento?