Programação OO voltadas para interface  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
tuxx
Thread.start()

Membro desde: 03/01/2007 14:20:21
Mensagens: 41
Offline

Olá,

Quando se adquiri um pouco de experiência em OO percebemos que uma boa prática de programação é manter os conceitos de baixo acoplamento e alta coesão entre classes. Minha dúvida é como se representar no diagrama de classes quando se usa interfaces para receber vários tipos de implementação dela.

De acordo com a imagem a seguir





A classe EquipamentoControle apenas conhece a interface de seu repositório, eu quero dizer que através do método setRepository(EquipamentoRepository repository) ele recebe qualquer implementação da interface,,

isso é correto ou minha composição no diagrama tem que ser diretamente a minha classe específica( que implementa a interface)


Se alguém puder me ajudar fico muito agradecido
Giulliano
GUJ Master
[Avatar]

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

Falar de arquitetura sem se conhecer tod o contexto é dar um tiro no escuro.

Entretanto posso dizer que seu método que recebe uma inteface esta mais coeso e menos acoplado do que um método que recebe apenas uma implementação. Agora vai do seu sistema poder ou não receber qualquer implementação.

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




<UnTouChAbLe>
[Email] [WWW] [MSN]
tuxx
Thread.start()

Membro desde: 03/01/2007 14:20:21
Mensagens: 41
Offline

Muito obrigado pela ajuda Giulliano,

meu objetivo é realmente fazer com que o controle receba qualquer tipo de implementação de repositório, isso vai ser feito através de injeção
sergiotaborda
GUJ Expert
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline

tuxx wrote:
A classe EquipamentoControle apenas conhece a interface de seu repositório, eu quero dizer que através do método setRepository(EquipamentoRepository repository) ele recebe qualquer implementação da interface,,

isso é correto ou minha composição no diagrama tem que ser diretamente a minha classe específica( que implementa a interface)


Falando apenas da representação o seu diagrama está quase correto. A classe EquipamentoControle tem um EquipamentoRepository.
Ela não é composta por EquipamentoRepository , por isso o lousangulo junto a EquipamentoControle não deveria existir.

Em relação a apontar a classe ou a interface, vc aponta a interface. Afinal é isso que vc quer. se vc apontar a classe, a classe EquipamentoControle dependerá da implementação real do repositorio que não é o que vc quer.


Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
tuxx
Thread.start()

Membro desde: 03/01/2007 14:20:21
Mensagens: 41
Offline

Obrigado sergiotaborda
rmendes08
GUJ Master
[Avatar]

Membro desde: 29/05/2008 14:09:28
Mensagens: 1616
Offline

No caso, você não precisa representar a implementação neste diagrama de classes, justamente porque essa escolha será feita em tempo de execução. Assim, isso seria representado em diagramas que representam aspectos dinâmicos do sistema, como o diagrama de atividades ou o diagrama de seqüências.

"A Técnica é transformada em Arte por quem a emprega"

"O futuro pertence àqueles que acreditam na beleza de seus sonhos"

Computadores Fazem Arte

http://www.uaijug.com.br

"É importante estabelecer uma estrutura de alto nível, mas isso não significa criar uma infinidade de diagramas de classes detalhados."
jgbt
GUJ Master
[Avatar]

Membro desde: 04/06/2003 15:01:48
Mensagens: 1286
Localização: Porto Alegre/RS
Offline

So um detalhe a adicionar ao que ja foi falado.

Quando se fala "Programar voltado para a interface" não quer dizer que vc tem que usar interfaces e classes que a implementam, mas que vc deve programar pensando
no que os outros objetos conhecem do seu objeto,ou seja a "interface" de acesso a troca de mensagens com ele, sem se preocupar em como isso esta implementado.

[]´s



João Bier
Desenvolvedor Java
[Email]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team