>>Eu, Ricardo Munhoz Santiago sou uma pessoa física, que me formei médico e
>>venho trabalhar neste hospital. Entro então como Medico. No meio do ano,
>>fico doente e resolvo me internar neste mesmo hospital. Para ter uma ficha
>>clinica preciso ser cadastrado como paciente. Já houve duplicação dos
dados
>>da classe Pessoa Fisica.

>Desculpa, mais nao entendi porque teria duplicacao ja que se pesquiso no
>cadastro pelas pessoas fisicas vou te achar (a generalizacao e' justamente
>pra evitar a duplicacao de informacao). A tua propria frase e incompativel.
>Na hora de criar uma nova instancia do Paciente que implica criar uma nova
>instancia da Pessoa Fisica descobriria a duplicacao.

Ok. Você pode até descobrir a duplicação, mas e aí? O que você vai fazer?
Vai deixar de cadastrá-lo como Paciente, ou vai apagar o cadastro dele como
Médico? Você não pode ter os dois ao mesmo tempo, visto que eles são
paralelos na árvore de herança ...
A grande verdade é que este problema de design, na hora da programação
geralmente é resolvido com duplicação. O que é péssimo, mas é melhor do que
perder um cadastro para fazer outro! Por isso eu citei duplicação ...


>Que tal se definimos duas interfaces : IPaciente e IMedico (alguem me
>indique a sintaxe correta, por favor) e aplicamos elas na classe pessoa
>fisica? Sera melhor que a associacao? Porque?
>O sera melhor deixar como associacao mesmo?



O modelo pede uma associação.
O que você está sugerindo é grudar mais ainda, colocando Paciente, Medico e
Pessoa Física Tudo junto.
Se nós aplicarmos as interfaces IPaciente e IMedico à classe Pessoa, estamos
dizendo que toda pessoa física tem responsabilidades de Médico e de
Paciente, o que não é verdade!

A associação é que permite o reuso!
Imagine que amanhã seu sistema cresça, e você queira incluir a parte
administrativa, incluindo outros tipos de funcionarios (Enfermeiros,
Tecnicos, Administradores).
Se você usar o primeiro modelo, vai ter uma subclasse de Pessoa Fisica para
cada novo tipo. Mas o problema da multipla-exclusão ou duplicação continua.
Se você usar o segundo modelo, irá criar + 3 interfaces e aplicá-las à
classe paciente.
Se usar ASSOCIAÇÃO irá criar + 3 classes independentes e fazer uma
associação com a classe pessoa Física.


Ricardo Munhoz Santiago (CPM Sistemas)
Sun Certified Programmer for the JAVA 2 Platform


Come and get some !!!


    --------------------------- LISTA SOUJAVA ---------------------------
    http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
    [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
    ---------------------------------------------------------------------

Responder a