Aonde as classes Medico, Vendedor e AnalistaSistemas são filhas da classe Pessoa. No momento de modelar as classes de persistência utilizando DAO seria melhor criar uma classe DAO pra cada entidade:
Então, você pode colocar métodos comuns a todas as classes filhas na super classe Pessoa, assim reutiliza o código.
E os métodos particulares de cada classe filha você pode implementa-las nas próprias classes filhas.
Veja sobre designer patters, o padrão Strategy, ele te dará alguma luz sobre essa sua dúvida.
lucasmurata
Se voce estiver em ambiente JPA, seus DAOs próprios são desnecessários no seu projeto.
drsmachado
A modelagem é flexível.
Da mesma forma que você não precisa colocar nos diagramas todas as classes, os métodos menos relevantes podem ser suprimidos.
É fato que, quando você trabalha com classes especializadas, muitos dos atributos e operações das classes pai não serão repetidos (não há razão para isto, pois a UML dá suporte para essa abstração).
Ainda mais em se tratando de uma herança polimórfica em que a sobrecarga de métodos vai ser peculiar a cada classe (Vendedor, Medico, etc).
Quando falar que é preciso salvar uma nova pessoa, sabe-se que ela será um medico, um vendedor através das business rules e do contexto atual.
Entendeu?
francislon
Não estou utilizando JPA. Estou utilizando simplesmente JDBC.
Estou mais preocupado com a modelagem orientada a objetos em si. Se eu tiver um método na classe PessoaDAO:
public void save(Pessoa pessoa, int tipo){
switch(tipo){
case MEDICO:
//salva os dados do medico
case VENDEDOR:
// os dados do vendedor
case ANALISTA_SISTEMAS:
// os dados do analista de sistema
}
}
Essa forma de implementar é errada? Ou Seria melhor eu ter um método ‘save’ especifico pra cada filho de Pessoa?
rsantik
Vê se você concorda comigo? Eu faria assim, lógico que existe milhões de maneiras de se fazer.
Acredito que assim fique melhor seu código, pois cada filho utiliza o método salve() a seu modo, e todos tem um contrato com o pai. Utilize polimorfismo e herança.