OO - Duvidazinha com herança

galera estou com uma duvudazinha aqui, parece meio boba mais né anum…hehehe

seguinte eu tenho 3 entidades:
*Pessoa
*Usuario - é um Pessoa
*Contato - é um Pessoa


blz, porém Usuario tem um relacionamento one-to-many com Contato…

vc acham que eu continuo usando herança nesse caso, estou achando meio estranho isso…

qq vcs acham ??? desde já agradeço.

quais são os atributos de cada classe?

Pessoa
-PrimeiroNome
-SegundoNome
-email
-dtnascimento
-Telefone(Entidade)

Usuario extends Pessoa
-Senha
-Contato(Entidade)

Contato extends Pessoa
-descrição
*tem mais algumas informações mais eu esqueci o projeto esta em casa…

,

tem pessoas que não gostam muito de herança…assim como existem as que adoram…

seu projeto não esta errado e tão pouyco vai deixar de funcionar…se essa é sua melhor saída use-a… :wink:

Com certeza deve continuar usando essa herança esta correta, a questão não é se gosta ou não de usar.

Por que iria repitir os atributos de pessoa em usuario e contato? isso seria redundante.

Eu recomendo que continue usando, mesmo que ache complicado, tem que aprender isso, orientação a objetos é tudo de bom, então use os recursos dele.

Abraço…

Com certeza deve continuar usando, essa herança esta correta, a questão não é se gosta ou não de usar.

Por que iria repitir os atributos de pessoa em usuario e contato? isso seria redundante.

Eu recomendo que continue usando, mesmo que ache complicado, tem que aprender isso, orientação a objetos é tudo de bom, então use os recursos dele.

Abraço…

Eu nao vejo motivos pra acabar com a herança. Fazer isso só iria complicar mais ainda o seu codigo com metodos e atributos duplicados.

hehe mais um bugizinho no forum.

[quote=vanzella]Com certeza deve continuar usando, essa herança esta correta, a questão não é se gosta ou não de usar.
[/quote]

Nada contra sua opnião…mas me diga qual é a lei que obriga a pessoa a usar herança ??? Nunca li esse livro …

acho que devemos usar aquilo que melhor nos atende e nem sempre isso se resume a herança…

Nao acho que seja questao de lei… Mas vai chegar uma hora no sistema, mesmo que na insercao no banco de dados, que ele vai precisar tratar um Usuario ou Contato como Pessoa. E ai? Como fazer o teste sem herança/interface?

galera vlew pelas dicas, mais OO não é o problema o que eu estou achando estranho é uma possivel inverssão de papel nesse caso, eu sou completamente adepto a herança em alguns casos, mais esse é especial…

pois um Usuario pode algum dia se tornar um Contato ou vice-versa
um Contato pode tornar-se um Usuario

penssem nisso !!!

E transformar Contato em uma interface?? É uma solução?

ainda naum, pois mesmo assim eu teria uma Herança de Pessoa…

reaproveitar o que esta pronto !!

Contato ainda é uma pessoa.

eu pensei em Contato e Usuario ter uma agragação com Pessoa, pois o todo depende da perte uma asso… um pouco mais forte, qq vcs acham ??

Galera isso é soh uma duvida que resolvi postar aqui, quando encontro alco assim, tipo uma inverssao de papel,

soudaniel_01

Lembre que no Java vc so tem um cartucho pra gastar com heranca, entao as vezes eh melhor vc usar interfaces mesmo, mas tudo depende do seu projeto

Eu particularmente prefiro usar interfaces…

A excessao eh quando a classe pai precisa de metodos que precisam ser implementados e que fazem alguma coisa importante…

Abs

Mas pq vc estaria preocupado com essa inversão de valores…

digamos que Robert é um usuário e esta cadastrado assim.
e que Mariana é um contato…

Agora vamos iverter os valores…Robert é um contato LOGO vc terá dois Roberts um usuário e um contato.

Se isso esta gravado num SGBD…você poderia tanto apagar o Robert usuário e passa-lo para contato OU criar uma relação MANY-TO-MANY entre contato e usuário.

mensagem duplicada

Acho que não há problema em implementar assim.

Infelizmente o mundo relacional é bem diferente do mundo OO então talvez haja algumas dificuldades de leitura na hora de transferir de um lado para o outro (mas faz parte :D).

Quanto a não gostar de herança, acho que ela não é interessante quando você tem que herdar classes externas a seu sistema, como de frameworks (como é o struts) ou coisa assim já que o deixa totalmente dependente e acoplado ao FW, só que no seu caso (na minha humilde opinião) acho interessante porque diz respeito ao comportamento dos objetos do seu sistema, se tanto seu usuario, quanto seu contato se comportam como Pessoas então a herança é interessante.