| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/01/2008 22:59:42
|
pcalcado
Moderador
![[Avatar]](/images/avatar/110eec23201d80e40d0c4a48954e2ff5.jpg)
Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline
|
Porque não seria coerente uma interface? Vai depender do que você espera de um Proprietario. Usar interfaces geralmente é melhor, tanto do ponto de vista técnico (proxies dinâmicos, hrança múltipla) quanto de modelagem (você especiica um comportamento e não uma implementação). Usar uma superclasse para esta relação geralmente só é vantagem quando ela não é abstrata e/ou já possui um bom candidato dentro suas classes, não precisa criar ma classe só para isso.
Mas tendo ou não uma interface a ergunta e: qual a vantagem em ter uma lista na superclasse? A uperclasse deve contêr coisas que são caracteristicas de todos os seus filhos, ter uma lista é uma delas? Voltando ao exemlo da interface, será que o que você precisa não é apenas que a classe tenha um método que retorna o(s) telefone(s)? Será que é tão importante como isso é implementado?
Os dados específicos ficam nas filhas, apesar que eu não conheço seu modelo o suficiente para achar que vcê deva ter essa herança de qualquer modo.
|
Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/01/2008 23:17:49
|
_filipe
Thread.start()
![[Avatar]](/images/avatar/82ab46c6311bf9d630814bb07d8c4cfb.jpg)
Membro desde: 27/07/2007 18:44:13
Mensagens: 31
Offline
|
Legal cara, bacana
Entendi aonde quer chegar, ja imaginava que seria dificil ter uma resposta sem lhe enviar a modelagem do sistema e as especificações ...
Mas me ajudou muito ...
Agora, suponhamos que eu utilize interface para a pessoa, é possível mapear isso no hibernate ?
Quero dizer, eu precisarei criar uma tabela Pessoa !?
This message was edited 1 time. Last update was at 05/01/2008 23:18:20
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/01/2008 23:22:16
|
pcalcado
Moderador
![[Avatar]](/images/avatar/110eec23201d80e40d0c4a48954e2ff5.jpg)
Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline
|
Você não persiste a interface, persiste a implementação. Pro ORM não importa.
|
Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/01/2008 23:26:56
|
_filipe
Thread.start()
![[Avatar]](/images/avatar/82ab46c6311bf9d630814bb07d8c4cfb.jpg)
Membro desde: 27/07/2007 18:44:13
Mensagens: 31
Offline
|
uhnm cara,
então complicou, pq de acordo com a minha duvida no contexto Pessoa Juridica, Pessoa Fisica e Telefones, eu tinha pensado em um modelo fisico de banco de dados mais ou menos assim:
Pessoa
- id (pk)
- nome
PessoaFisica
- Pessoaid (fk)
- dataNascimento
PessoaJuridica
- PessoaId (fk)
- cnpj
Telefones
- id
- pessoaId (fk)
- numero
vou ter que pensar em outra modelagem agora ... algo mais proximo de:
PessoaFisicaTelefones
- pessoaFisicaId
- TelefoneID
- Tipo
certo ?
This message was edited 1 time. Last update was at 05/01/2008 23:27:31
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/01/2008 13:16:14
|
_filipe
Thread.start()
![[Avatar]](/images/avatar/82ab46c6311bf9d630814bb07d8c4cfb.jpg)
Membro desde: 27/07/2007 18:44:13
Mensagens: 31
Offline
|
Se fizer algo parecido com o citado acima, eu vou ter tantas tabelas no meu banco de dados ... que vai ser complicadisso manter ...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/01/2008 16:07:37
|
tnaires
GUJ Master
![[Avatar]](/images/avatar/5f6371c9126149517d9ba475def53139.png)
Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline
|
Filipe, você se preocupa muito com banco de dados!
Estude um framework de persistência ORM e você verá que nunca mais precisará desenvolver um banco de dados.
Abraços
|
Tarso Nunes Aires
Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/01/2008 16:12:48
|
_filipe
Thread.start()
![[Avatar]](/images/avatar/82ab46c6311bf9d630814bb07d8c4cfb.jpg)
Membro desde: 27/07/2007 18:44:13
Mensagens: 31
Offline
|
Então
Em minhas aplicações eu uso o hiberbante mais alguns outros patterns como DAO e etc ...
Pelo oque ouvi dizer, frameworks de persistencia ORM não são aconselhaveis para uso em aplicações complexas.
Tipo, voce teria alguma dica de um framework de persistencia ORM ? O hibernate não seria um !? Se sim, como não me preocupar com o banco de dados?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/01/2008 17:22:13
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline
|
_filipe wrote:Se fizer algo parecido com o citado acima, eu vou ter tantas tabelas no meu banco de dados ... que vai ser complica disso manter ...
por isso que você não vai manter. Você vai deixar algum framework manter.
Afinal vc está fazendo java ou programação-de-banco-de-dados-disfarçado-de-java ?
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/01/2008 17:27:23
|
_filipe
Thread.start()
![[Avatar]](/images/avatar/82ab46c6311bf9d630814bb07d8c4cfb.jpg)
Membro desde: 27/07/2007 18:44:13
Mensagens: 31
Offline
|
Entao, quando quiz dizer manter, não foi pensando na aplicação, e sim no banco de dados.
Realmente, estou preocupado com o banco de dados, pois estou pensando em objetos e no mapeamento do mesmo com as tabelas do meu banco. (É errado pensar assim?)
abras
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/01/2008 19:09:15
|
tnaires
GUJ Master
![[Avatar]](/images/avatar/5f6371c9126149517d9ba475def53139.png)
Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline
|
_filipe wrote:Pelo oque ouvi dizer, frameworks de persistencia ORM não são aconselhaveis para uso em aplicações complexas.
O que seriam aplicações complexas? Particularmente, eu nunca ouvi falar dessas limitações do Hibernate. Mas não posso falar que já vi aplicações críticas utilizando-o.
_filipe wrote: Tipo, voce teria alguma dica de um framework de persistencia ORM ? O hibernate não seria um !? Se sim, como não me preocupar com o banco de dados?
Sim, o Hibernate é um exemplo.
_filipe wrote:Se sim, como não me preocupar com o banco de dados?
Não é que você não tenha que se preocupar com o banco, e sim, você não precisa se preocupar em desenvolvê-lo. Você constrói o seu modelo utilizando suas classes e se preocupa apenas com ele. Modificações que por ventura venham a ser necessárias no seu modelo refletirão diretamente no banco de dados.
|
Tarso Nunes Aires
Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/01/2008 19:18:40
|
_filipe
Thread.start()
![[Avatar]](/images/avatar/82ab46c6311bf9d630814bb07d8c4cfb.jpg)
Membro desde: 27/07/2007 18:44:13
Mensagens: 31
Offline
|
Uhnm ... entendi
beleza
valeu galera
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/01/2008 19:31:46
|
tnaires
GUJ Master
![[Avatar]](/images/avatar/5f6371c9126149517d9ba475def53139.png)
Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline
|
Veja este livro excelente sobre Hibernate (um dos autores é o criador do framework, Gavin King).
Abraços
|
Tarso Nunes Aires
Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/01/2008 09:54:41
|
Quinger
JavaTeenager
![[Avatar]](/images/avatar/621937d0e97e2559f2170a66a2218089.jpg)
Membro desde: 17/07/2007 15:06:34
Mensagens: 161
Offline
|
_filipe
Sempre fiz da seguinte maneira.
Faz uma classe Pessoa com (Id, Nome, DtRegistro, Endereco endereco, Telefone[] tel) dai por herança(extends) vc faz sua PessoaFisica e PessoaJuridica.
dai no hibernate vc mapeia a PessoaFisica e PessoaJuridica, como elas estão herdando as propriedades de Pessoa o hibernate já reconhece os atributos.
|
Leandro Quingerski
Apollo Tecnolgia da Informação |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/02/2008 16:23:22
|
Alessandro Lazarotti
Virtual Machine Man
![[Avatar]](/images/avatar/2aaaddf27344ee54058548dc081c6541.jpg)
Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline
|
Na minha opinião, uma interface ou implementação chamada simplesmente "Pessoa" só deveria existir em um sistema, se existir uma entidade chamada ExtraTerrestre ou Animal que possa entrar em conflito de comportamento com a tal "Pessoa".
Pessoa é algo muito genérico, posso estar enganado mas fatalmente essa modelagem possa ser modelada ao ponto de ficar mais clara.
|
... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/03/2008 00:20:07
|
Joaquimnabuco
What is classpath?
Membro desde: 15/09/2007 05:32:14
Mensagens: 8
Offline
|
Com todo respeito e sem querer causar polemicas, vejo muita gente se preocupando em generalizar o maximo seu DAO, estudando afoitamente hibernate e o pior de tudo se gabando por estão programando em poo. Novamente não quero causar polemica pelo contrario, onde eu quero chegar é que existe uma lacuna enorme entre uma modelagem bem feita e o uso de framework e conceitos ddd. Vejo professores de faculdade usando o exemplo de pessoafisica herda pessoa e pseesoajuridica herda pessoa e na próxima aula mostrando hibernate e o conceito de DAO(que é outro ?erro? pois não vejo vantagem em ter um DAO com hibernate já que o mesmo pode fazer o papel do de DAO, a menos que não tenhamos um SGDB e sim um outro mecanismo de armazenagem de dados, bom mas isso é um outro assunto), se um professor usa esse exemplo de modelagem ?ridícula?, não precisa nem ensinar DAO.
Voltando ao problema, acho muito importante debatermos o assunto desse tópico pois não vale nada usarmos poo sem ter uma modelagem apropriada. Minha humilde opnião:
1 não existe pessoafisica e nem pessoajuridica
2 existe sim Pessoa, pense em pessoa como um ser humano
3 existe sim empresa, pense em empresa como um prédio(parece obvio)
4 Esqueça cpf e cnpj como conceito que separam uma pessoa de uma empresa, o que separa uma pessoa de uma empresa é o fato de pessoa ser uma pessoa, ou melhor ter ou não comportamento diferente de uma empresa. A outro detalhe cpf e cnpj são identificações somente aqui no Brasil, mais uma razão para esquecer pf e pj.
A melhor maneira, acho, é começar a modelar pela utilização de pessoa ou empresa dentro do sistema. Bom seu sistema é de venda, então seu sistema terá um cliente, cliente terá um comportamento certo, daí pergunto, qual a diferença quando na loja que usa o sistema o cliente que compra ser uma pessoa ou uma empresa?
Se nenhuma, então simplesmente crie uma interface cliente, daí crie uma person que implementa cliente. Para saber se a person é uma pessoa ou uma empresa crie um método person.isEmpresa. daí aqui não teremos a classe pessoa e nem empresa, mto menos PJ e PF.
Agora se sim, existe diferença entre uma pessoa compra ou uma empresa(lembrando que quem compra é um cliente), por exemplo, o calculo de desconto de uma empresa é diferente de uma pessoa a sim crie duas classes. Empresa implementa cliente e Pessoa implementa cliente. Para venda não importa se cliente é ou não empresa, mas para o sistema sim. Daí quando a venda for calcular por exemplo Cliente.meudesconto(produto) vai usar aqui poliformismo e sim fara sentido ter 2 classes, empresa e pessoa. Lembrando novamente que não existe cadastro de pessoa e empresa e sim de clientes, para o sistema dificilmente vai existir o papel de pessoa e empresa e sim cliente.
Acho que minha explicação ficou meio complica, desculpas, bom se esse assunto fomentar, ?posto ? novamente.
|
|
|
 |
|
|