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:
Pedido
-- Amostra[] amostras
-- date data
-- ...
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:
[code]PedidoItem
– Amostra amostra
– int quantidade
– float valor
Pedido
– PedidoItem[] itens
– date data
– …[/code]
Penso ser o mais prudente a ser fazer, não sei, parece óbvio demais hahaha…
Dúvidas:
-
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 ?]
-
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 !