Dúvida com implementação de classes  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 !
Estou projetando um sistema e me veio uma dúvida:

Tenho uma entidade Produto que representa obviamente o objeto Produto dentro do sistema. Para cada produto, poderei ter várias fotos do mesmo.
Inicialmente eu pensei em composição: ProdutoFotos (a possível entidade das fotos) é composta do Produto.

Tentativa de diagrama UML em texto wrote:Produto<>------ProdutoFoto

<>---- simbolo de composição X)

A responsabilidade de cada foto do produto seria do ProdutoFoto, e o controle sobre ProdutoFoto seria do Produto, obviamente.

Pensando um pouco mais, acho que uma solução bem mais simples, seria um vetor fotos dentro da entidade Produto mesmo.
Penso que ambas soluções seriam válidas, mas acho que a primeira - do ProdutoFotos - seria mais interessante caso eu tivesse mais coisas a gerenciar da foto, como data de adição, adicionado por quem e etc. Porém, estou pensando em adotar a solução do vetor mesmo.

O que acham ? Minha idéia está correta ou vocês vêem que isso pode não ser uma boa prática OO ?


Abraços!

http://programe.me
Zend Certified Engineer
ArchLinux - A simple lightweight Linux Distribution
[WWW] [MSN] [ICQ]
Naruffy
JavaEvangelist
[Avatar]

Membro desde: 28/03/2008 18:54:49
Mensagens: 324
Offline

Acho que seria mais facil de fazer e de entender se você cria-se uma classe Foto por exemplo e fizesse uma ArrayList do tipo Foto.
cmoscoso
Virtual Machine Man

Membro desde: 23/10/2007 10:08:29
Mensagens: 687
Offline

+1

List<Foto> fotos;
[Email]
Giulliano
GUJ Master
[Avatar]

Membro desde: 14/11/2006 19:29:38
Mensagens: 1627
Localização: São Paulo
Offline

É uma questão de análise. Pra que desperdiçar funcionalidades se a empresa não precisa de controle sobre uma foto.

Imagine num mundo real onde vc ganha R$ 30,00 a hora. E me diz que vai gastar 8 horas criando a tal da Foto e suas implementações onde o que eu te pedi foi controle sobre o produto apenas.

Evitar desperdício é uma boa prática da Visão Ágil.

This message was edited 1 time. Last update was at 23/10/2008 12:54:40


Oracle Certified Master, Java EE 5 Enterprise Architect
Oracle Certified Professional Java Programmer
GiuLLianO MoRRoNi




<UnTouChAbLe>
[Email] [WWW] [MSN]
hlegius
JavaChild
[Avatar]

Membro desde: 07/05/2006 14:29:25
Mensagens: 126
Localização: Guarulhos, SP
Offline

Giulliano wrote:É uma questão de análise. Pra que desperdiçar funcionalidades se a empresa não precisa de controle sobre uma foto.

Imagine num mundo real onde vc ganha R$ 30,00 a hora. E me diz que vai gastar 8 horas criando a tal da Foto e suas implementações onde o que eu te pedi foi controle sobre o produto apenas.

Evitar desperdício é uma boa prática da Visão Ágil.


Pois é. É o renomado "matar mosca com um canhão". Este é um dos motivos pelo qual postei. Porque uma vez que apenas irei controlar o path das fotos do produto, penso em algo simples, porém, viso também a reutilização, legibilidade e as boas práticas OO - a qual estou estudando X)

cmoscoso wrote:+1

List<Foto> fotos;


Ao que entendi, vocês sugerem que na entidade Produto, haja o ArrayList das fotos, pois é uma composição do Produto (as fotos). Assim sendo, toda a responsabilidade de manipular as Foto(s) ficará a cargo da entidade Produto, correto ?

Por exemplo:

Ele irá correr o ArrayList produtos e irá verificar se bate o path, com o path que quero remover:



Do ponto de vista da reutilização, isso não seria ruim ? Pois se eu for reutilizar o Foto para outro fim, terei que montar sua implementação novamente (não em sua totalidade, pois pontos poderão mudar) mas em termos gerais serão duplicado sim.

O que acham ?


Agradeço a todos !

This message was edited 2 times. Last update was at 23/10/2008 14:16:12


http://programe.me
Zend Certified Engineer
ArchLinux - A simple lightweight Linux Distribution
[WWW] [MSN] [ICQ]
peczenyj
Moderador
[Avatar]

Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline

Leia sobre Domain Driven Desing.

Sobre a classe Foto: de a ela um comportamento definido e não fique pensando demais no futuro: quando chegar a hora de refatorar: refatore. Só lembre-se de investir em uma suite de testes automatizados/ integração continua, etc

http://pacman.blog.br

'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.'
[WWW]
hlegius
JavaChild
[Avatar]

Membro desde: 07/05/2006 14:29:25
Mensagens: 126
Localização: Guarulhos, SP
Offline

peczenyj wrote:(..)
Sobre a classe Foto: de a ela um comportamento definido e não fique pensando demais no futuro: quando chegar a hora de refatorar: refatore.


Então no caso, seria fornecer a ela o comportamento especifico para a foto do produto. Se eu precisar de mais tipo de fotos ao longo do projeto (depois em outras fases, pois por hora não preciso) eu volto e refatoro, certo ?


Abraços!

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