Dúvida com modelagem OO  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
hlegius
JavaChild
[Avatar]

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
[WWW] [MSN] [ICQ]
Guilherme Gomes
Virtual Machine Man
[Avatar]

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.
[WWW] [Yahoo!] aim icon [MSN] [ICQ]
hlegius
JavaChild
[Avatar]

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
[WWW] [MSN] [ICQ]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team