| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/02/2009 14:06:26
|
hlegius
JavaChild
![[Avatar]](/images/avatar/0f20c77d6afb02422603acb0329b5a41.jpeg)
Membro desde: 07/05/2006 14:29:25
Mensagens: 126
Localização: Guarulhos, SP
Offline
|
Salve turma !
"Modelando" umas classes aqui, acabei chegando num ponto onde fiquei com dúvida sobre o que fazer. Eu até achei uma saída que daria certo, mas não tenho certeza se é uma forma boa de usar, bem, vamos lá:
Tenho Produtos onde um Cliente pode solicitar uma Amostra deste produto. (3 entidades: Produto, Cliente e Amostra)
Amostra tem agregado um Cliente e um Produto (1 amostra = 1 produto = 1 cliente - sempre !)
Cliente gostando da Amostra, solicita o Pedido do mesmo. Entretanto, ele poderá aprovar várias amostras e fechar tudo num mesmo Pedido.
Então: 1 Pedido = 1 ou * Amostras (só existe Pedido de amostras aprovadas, nunca Produto vira direto pedido)
Inicialmente eu pensei:
Pensei isso com o seguinte pensamento: "Amostra já tem cliente e produto, então, não preciso jogar novamente isto em pedido". Não sei se é legal isto, mas por fim acabei pensando em outra solução, até porque essa tem um problema: a quantidade de cada Amostra aprovada. Logo:
Penso ser o mais prudente a ser fazer, não sei, parece óbvio demais hahaha...
Dúvidas:
1. Jogo o Cliente para Pedido.cliente ou deixo em Amostra mesmo ? (Pedido.getItem(0).getAmostra().getCliente().getNome()) [Acho que isto quebra um príncipio de projeto - aquele de que não deve-se conhecer muitos vizinhos, não ?]
2. Repare que no PedidoItem tem um "float valor". Esse valor é baseado no Produto, pois tenho uma regra interna lá: Se o cara pedir 100 unidades é um preço, se pedir 200 é outra se pedir + de 300 é outra. O produto sabe das quantidades VS Preço, então esse "valor" em PedidoItem deve ser um calculo feito pelo Produto, penso. Ou não ?
Dúvidas de principiante :/
Alguém pode me dar uma mão ?
Abraços !
|
http://programe.me
Zend Certified Engineer
ArchLinux - A simple lightweight Linux Distribution |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/02/2009 14:26:29
|
Guilherme Gomes
Virtual Machine Man
![[Avatar]](/images/avatar/1d32607ab01409c4b6916c5cae13b269.jpg)
Membro desde: 25/06/2007 14:32:09
Mensagens: 686
Localização: São Paulo
Offline
|
1. Um Cliente faz um Pedido com N Amostras, logo o cliente está ligado com o pedido, e o pedido às amostras e não às amostras diretamente ao pedido.
2. O Pedido recebe o valor por uma outra classe, que não é produto. Seria uma classe de negócio que fecha o pedido do cliente e calcula o valor total, setando pedido.setValor().
|
-----------
Atenciosamente,
Guilherme V. F. Gomes. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/02/2009 14:51:46
|
hlegius
JavaChild
![[Avatar]](/images/avatar/0f20c77d6afb02422603acb0329b5a41.jpeg)
Membro desde: 07/05/2006 14:29:25
Mensagens: 126
Localização: Guarulhos, SP
Offline
|
Guilherme Gomes wrote:1. Um Cliente faz um Pedido com N Amostras, logo o cliente está ligado com o pedido,
Então é necessário haver uma relação direta: Pedido.cliente e não "aproveitar" o relacionamento Amostra.cliente.
..e o pedido às amostras e não às amostras diretamente ao pedido.
Sim, o pedido está relacionado com as amostras que irão compor o mesmo. Mas realmente não sei o que mudaria no modelo que citei no tópico. Alguma sugestão ?
2. O Pedido recebe o valor por uma outra classe, que não é produto. Seria uma classe de negócio que fecha o pedido do cliente e calcula o valor total, setando pedido.setValor().
Então essa regra ficaria na classe responsável por criar o novo Pedido.
A ideia de se trabalhar com PedidoItem parece-me correta, ou não ?
--- Edit ----
Estive rabiscando uns papéis aqui e pensei nisto:
Pseudo-Java
Funcionar, funcionaria, mas o relacionamento ali estaria correto, penso. O que acham ?
Abraços !
This message was edited 1 time. Last update was at 25/02/2009 15:43:35
|
http://programe.me
Zend Certified Engineer
ArchLinux - A simple lightweight Linux Distribution |
|
|
 |
|
|
|
|