| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/12/2009 12:58:15
|
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
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/12/2009 13:16:48
|
Giulliano
GUJ Master
![[Avatar]](/images/avatar/7f5a17b792b687fc4c227a5c5e569dd8.jpg)
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> |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/12/2009 13:24:48
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/12/2009 13:26:52
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/12/2009 14:04:29
|
tuxx
Thread.start()
Membro desde: 03/01/2007 14:20:21
Mensagens: 41
Offline
|
Obrigado sergiotaborda
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/12/2009 14:43:00
|
rmendes08
GUJ Master
![[Avatar]](/images/avatar/9ee855f3ce4dd40182183463232e2162.jpg)
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." |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/12/2009 15:02:16
|
jgbt
GUJ Master
![[Avatar]](/images/avatar/25df35de87aa441b88f22a6c2a830a17.png)
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 |
|
|
 |
|
|