| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/09/2010 01:25:54
|
RenatoJP
Smalltalk
Membro desde: 02/09/2010 01:04:06
Mensagens: 3
Offline
|
Galera, estou fazendo um projeto e estou com uma dúvida no diagrama de classes, o problema aqui é na classe pessoa, onde eu tenho um cliente fisico e juridico e um fornecedor físico e jurídico também, e o cliente pode ser fornecedor e vice-versa, daí fica minha dúvida, como posso melhorar esse diagrama e corrigir os problemas de referências que os professores dizem ter mas ninguém dá uma solução, obrigado.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/09/2010 08:53:41
|
asaudate
GUJ Master
![[Avatar]](/images/avatar/974e2945a18e0bfb8e3aa8becac3e65c.jpg)
Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline
|
Me parece que Cliente e Fornecedor deveriam estender de Pessoa Jurídica, não de Pessoa. E Funcionário deveria estender Pessoa Física, não Pessoa. Não sei dizer se é esse o problema que seus professores dizem ou se tem mais alguma coisa, mas esse seria um começo.
[]´s
|
Alexandre Saudate
__________________________
Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.
Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate
Evite usar Axis2!!! Leia aqui para mais detalhes!
@alesaudate
Quer ler um blog especializado em web services e SOA?
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/09/2010 09:06:03
|
fantomas
GUJ Master
![[Avatar]](/images/avatar/a2bf57c3aee957f2aaf75aa84717b3be.jpg)
Membro desde: 24/04/2008 16:10:55
Mensagens: 1534
Localização: Terra (maior parte do tempo)
Offline
|
Bem vindo ao forum Renato!
Eis aqui meu chute!
O "problema" relacionado a classe Pessoa é causado pelo uso da herança. Pessoa juridica, por exemplo, não tem (a principio) telefone celular; quando vc utiliza herança a estrutura da superclasse fica disponivel para a classe, logo, neste caso (pessoa juridica) herança pode não ser a melhor saida. O objeto pessoa juridica ficará com uma estrutura de dados para telefone celular sendo que ele não precisa deste atributo.
A saída indicada é o uso da agregação. Ao invés da classe Pessoa Fisica herdar a estrutura da classe Pessoa, ela (classe Pessoa Fisica) deverá agregar a classe Pessoa.
Inicialmente Pessoa Juridica, Pessoa Fisica, Cliente, Funcionario pode parecer um TIPO DE PESSOA nos levando a pensar que utilizar herança é a melhor opção. Mas na realidade Pessoa Fisica, Cliente, Funcionario e etc... são PAPEIS desempenhados pela pessoa dentro do domino por isso que herança não se encaixa muito bem como solução.
flws
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/09/2010 09:14:15
|
fantomas
GUJ Master
![[Avatar]](/images/avatar/a2bf57c3aee957f2aaf75aa84717b3be.jpg)
Membro desde: 24/04/2008 16:10:55
Mensagens: 1534
Localização: Terra (maior parte do tempo)
Offline
|
Depois de acertar a questão da herança x agregação é necessário fazer uma revisão nos atributos / relacionamentos das classes. Me parece que dá para melhorar um pouco mais também.
flws
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/09/2010 10:27:51
|
RenatoJP
Smalltalk
Membro desde: 02/09/2010 01:04:06
Mensagens: 3
Offline
|
Aew galera, olha eu aqui novamente, mexi novamente no diagrama, adicionei uma classe papel pois uma pessoa pode ter mais de um no sistema e também adicionei uma classe de entrada e saída para fins de consulta/relatório, porém conversei com meu professor e ele disse que ao montar o banco, utilizar uma tabela para pessoa (pessoa, pessoa física e jurídica)[img], acho que fica meio incoerente, mas bom ele pediu pra pesquisar sobre problemas de herança múltipla, se algué puder ajudar aí agradeço.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/09/2010 10:30:32
|
RenatoJP
Smalltalk
Membro desde: 02/09/2010 01:04:06
Mensagens: 3
Offline
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/10/2010 11:31:40
|
Guevara
GUJ Master
![[Avatar]](/images/avatar/debb1f141bb07971081da87bb43c269b.png)
Membro desde: 24/02/2009 17:56:09
Mensagens: 1023
Offline
|
Não rola fazer uma composição?
Aí colocaria cpf, cnpj e td que for relativo a pessoa na classe pessoa e o código ficaria assim:
O mesmo seria pra Funcionario e Fornecedor
Poderia criar uma classe Endereco, nela vc colocaria logradouro, numero, complemento, bairro, cidade, estado, cep e pais, e relacionaria com Funcionario, Cliente e Fornecedor, ficando uma relação @OneToOne:
Abraço!
This message was edited 1 time. Last update was at 24/10/2010 11:33:59
|
Analista de Sistemas e desenvolvedor WEB Java e Python
http://twitter.com/eguevara2012 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2010 18:27:09
|
KaosBr
Java Ninja
![[Avatar]](/images/avatar/4700e3e6a3d48a48f42962abf5e56d04.jpg)
Membro desde: 26/05/2010 18:06:58
Mensagens: 255
Localização: São Carlos
Offline
|
asaudate wrote:Me parece que Cliente e Fornecedor deveriam estender de Pessoa Jurídica, não de Pessoa. E Funcionário deveria estender Pessoa Física, não Pessoa. Não sei dizer se é esse o problema que seus professores dizem ou se tem mais alguma coisa, mas esse seria um começo. []´s
Boa noite, asaudate, tenho um modelo muito parecido, com o adotado pelo nosso amigo RenatoJP. A razão para essa estrutura, reside em que, tanto "Pessoa Fisica" quanto "Pessoa Juridica" podem ser, consumidor ou fornecedor. Exemplos: Como pessoa fisica, trabalho com manutenção e configuração, de servidor linux. Durante a execução, dessas tarefas, legalmente sou um fornecedor, de serviços. E a pessoa juridica, o consumidor, de minha mão de obra. Uma pessoa juridica, me vende, cabo e conectores. Neste momento eu, como pessoa fisica, sou consumidor da loja. E a pessoa juridica, fornecedor, de componentes. O que define, a condição de cliente ou fornecedor, está na posição ocupada, na relação comercial. Nota: Perdõem a intromissão, meu proposito é somar, ao topico. []s
This message was edited 1 time. Last update was at 25/10/2010 18:28:48
|
Anderson Fios
Técnico em Informática
http://afconsultoriaeservicos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/10/2010 08:23:15
|
asaudate
GUJ Master
![[Avatar]](/images/avatar/974e2945a18e0bfb8e3aa8becac3e65c.jpg)
Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline
|
KaosBr wrote:
asaudate wrote:Me parece que Cliente e Fornecedor deveriam estender de Pessoa Jurídica, não de Pessoa. E Funcionário deveria estender Pessoa Física, não Pessoa. Não sei dizer se é esse o problema que seus professores dizem ou se tem mais alguma coisa, mas esse seria um começo.
[]´s
Boa noite,
asaudate, tenho um modelo muito parecido, com o adotado pelo nosso amigo RenatoJP. A razão para essa estrutura, reside em que, tanto "Pessoa Fisica" quanto "Pessoa Juridica" podem ser, consumidor ou fornecedor.
Exemplos:
Como pessoa fisica, trabalho com manutenção e configuração, de servidor linux. Durante a execução, dessas tarefas, legalmente sou um fornecedor, de serviços. E a pessoa juridica, o consumidor, de minha mão de obra.
Uma pessoa juridica, me vende, cabo e conectores. Neste momento eu, como pessoa fisica, sou consumidor da loja. E a pessoa juridica, fornecedor, de componentes.
O que define, a condição de cliente ou fornecedor, está na posição ocupada, na relação comercial.
Nota: Perdõem a intromissão, meu proposito é somar, ao topico.
[]s
Oi, KaosBR! Interessante a sua colocação, ficou mais claro o modelo do amigo. No entanto, passo a concordar com o Guevara, que composição, nesse caso, seria mais elegante.
[]´s!
|
Alexandre Saudate
__________________________
Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.
Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate
Evite usar Axis2!!! Leia aqui para mais detalhes!
@alesaudate
Quer ler um blog especializado em web services e SOA?
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/10/2010 13:41:56
|
KaosBr
Java Ninja
![[Avatar]](/images/avatar/4700e3e6a3d48a48f42962abf5e56d04.jpg)
Membro desde: 26/05/2010 18:06:58
Mensagens: 255
Localização: São Carlos
Offline
|
Boa tarde, asaudate, concordo com a agregassão proposta, pelo Guevara, é bem vinda  RenatoJP , você tem, o atributo: ramoAtividade; Repetido em pessoa, fisica e juridica. Na sua solução, esse atributo não pode ser tranferido para, Pessoa tornando esta classe, mais coesa e removendo a duplicidade? []s
This message was edited 2 times. Last update was at 27/10/2010 13:43:18
|
Anderson Fios
Técnico em Informática
http://afconsultoriaeservicos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/10/2010 19:51:34
|
RafaelViana
GUJ Master
Membro desde: 23/03/2008 18:56:02
Mensagens: 1257
Localização: Venâncio Aires/RS
Offline
|
Eu modelaria da seguinte maneira:
P.S: O problema é que a interface complica bastante para modelar para o banco de dados. (Ainda estou procurando outras alternativas).
|
Rafael Rodrigues Viana
Estudando Java e Flex
Blog: http://www.cauirs.com.br/rafael/
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." |
|
|
 |
|
|