Olá,
Tenho uma dúvida sobre orientação a objetos na prática, principalmente com interface.
Por exemplo,
Suponha que eu tenha o seguinte cenário.
public abstract class Funcionario {
private Double salario;
public abstract void calculaBonificacao();
public Double getSalario() {
return salario;
}
public void setSalario(Double salario) {
this.salario = salario;
}
}
class Gerente extends Funcionario{
@Override
public void calculaBonificacao() {
// implementacao
}
}
class Vendedor extends Funcionario{
@Override
public void calculaBonificacao() {
// implementacao
}
}
Neste caso o que eu teria ?
class FuncionarioBO {
private FuncionarioRepository repository;
public void calcularSalario(Funcionario funcionario){
funcionario.calculaBonificacao();
repository.salvar(funcionario);
}
}
Mas na prática a arquitetura mais comum é as regras de negócio ficarem centralizadas no Objeto de negócio. Neste exemplo dei não vejo como poderia salvar o estado do objeto já que acredito que o Hibernate não entenderia isso e daria erro, correto ?
Uma outra situação seria um outro método que recebe alguém que implementa uma interface e tem que salvar esse objeto de forma polimórfica.
Alguém sabe tirar essas dúvidas minhas ? Tenho muito mais dúvidas relacionadas ao assunto, mas a explicação disso já me daria um norte.
Alguém ?