| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/03/2007 03:08:52
|
Pitágoras
JavaGuru
Membro desde: 18/01/2007 18:26:11
Mensagens: 247
Offline
|
Olá!!
Pessoal,
O que seria Acoplamento e Coesão??
Poderia me exemplificar!!
Abs.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/03/2007 03:54:53
|
paulovittor23
Java Ninja
![[Avatar]](/images/avatar/402cac3dacf2ef35050ca72743ae6ca7.jpg)
Membro desde: 11/05/2006 14:09:41
Mensagens: 282
Localização: Santos - SP
Offline
|
Por alto seria:
-Acoplamento: o nível de interligação entre duas classes, ou seja, o quanto uma classe conhece da outra. Lembrando que o acoplamento é proporcionalmente ligado a dor de cabeça que vc terá caso mude a implementação de uma classe. rs
-Coesão: Representa o quão uma classe é específica para desempenhar um papel em um contexto.
Melhores definições são bem-vindas
|
@paulovittor23
Pós-graduando em Engenharia de Software na PUC-SP.
SCJP 5.0, SCWCD 1.4, SCBCD 5.
http://www.paulovittor23.org/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/03/2007 04:49:34
|
pcalcado
Moderador
![[Avatar]](/images/avatar/110eec23201d80e40d0c4a48954e2ff5.jpg)
Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline
|
Acoplamento é quanto um elemento (classe, método, função, módulo, componente... basicamente qualquer coisa) depende e conhece do outro. Elementos muito acoplados geralmente são muito dependentes, mudou um e você com certeza vai ter que mudar o outro.
Coesão é o quanto as tarefas que um elemento realiza estão relacionadas com um mesmo conceito. Baixa coesão teria uma classe que, por exemplo, imprime um documento e exibe um formulário para o usuário, neste caso provavelmente você deveria diviri esta classe em mais de uma.
|
Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/03/2007 10:36:52
|
glaucioguerra
Java Ninja
![[Avatar]](/images/avatar/4bbb5420ed2dc9a8eaaedc7ae59de448.jpg)
Membro desde: 12/05/2006 09:18:54
Mensagens: 253
Localização: Porto, Portugal
Offline
|
Em um mundo perfeito teriamos alta coesão e baixo acoplamento.
|
Glaucio Guerra
http://glaucioguerra.wordpress.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/03/2007 11:03:58
|
herbertins
JavaGuru
![[Avatar]](/images/avatar/76fdca9cd791acce9582bb354b48e608.png)
Membro desde: 09/01/2007 17:26:55
Mensagens: 221
Localização: São Paulo - Jaguaré
Offline
|
o ideal entao seria ter uma alta coesao e baixo acoplamento.
no caso de alta coesão usando o exemplo do pcalcado eu teria que tar uma classe que imprime um documento e uma classe que exibe um formulario.
eh isso???
|
Herbert Martins
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/03/2007 17:27:20
|
LPJava
GUJ Hacker
Membro desde: 18/04/2006 12:50:23
Mensagens: 5524
Localização: Bahia/Porto Alegre
Offline
|
sim, o idela eh que vc tenha um class para cada um desse processo... e apena a chame quando for necessario.. vamos dizer que vc venha ter outra class que precise imprimir iai? o q faria? digitar novamente o codigo de impressao para essa nova classe? que perda de tempo e redundancia e má manutenção nao acha? entao vc cria apenas uma class so para impressao a class que precisa dela so chama-la e pronto... ela eh de todos... pense nela como uma "uma mulher que trabalha na noite" ela é de quem?
|
Sun Certified Java Programmer 5.0
Blog:http://www.camilolopes.com
Twitter:www.twitter.com/camilolope
Linkedin: http://br.linkedin.com/in/camilolopes
Curso online OCPJP: http://pro.imasters.com.br/online/cursos/preparatorio-para-certificacao-java-ocjp
Autor livro Guia SCJP & JEE c/ Frameworks: http://blog.camilolopes.com.br/livrosrevistaspalestras/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2007 03:56:53
|
Pitágoras
JavaGuru
Membro desde: 18/01/2007 18:26:11
Mensagens: 247
Offline
|
Pessoal,
Valew mmo, porém, p/ ficar bem fixado, alguém poderia exemplificar um pequeno código principalmente referente Acoplameno.
Grato pela paciência!!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2007 03:56:56
|
Pitágoras
JavaGuru
Membro desde: 18/01/2007 18:26:11
Mensagens: 247
Offline
|
Pessoal,
Valew mmo, porém, p/ ficar bem fixado, alguém poderia exemplificar um pequeno código principalmente referente Acoplameno.
Grato pela paciência!!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2007 12:07:32
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
A classe acima tem um exemplo de acoplamento. Só lembrando que acoplamento é uma relação entre duas classes.
Nesse caso, motor está acoplado a classe carro e vice-versa.
Abaixo, um exemplo de classe com baixa coesão:
Quem nunca viu um código assim? Que implementa o POG lone wolf? A classe faz tanta coisa, que não é possível descrever exatamente o para que ela serve...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/03/2007 02:52:13
|
Pitágoras
JavaGuru
Membro desde: 18/01/2007 18:26:11
Mensagens: 247
Offline
|
Valew!!
Aceito + exemplos.
Abs.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/08/2008 19:52:12
|
MarkKnopfler
Smalltalk
![[Avatar]](/images/avatar/8fa350192410b66f44295dc88a5435c5.jpg)
Membro desde: 27/03/2007 20:15:34
Mensagens: 3
Offline
|
Bem colega, 0% de acoplamento não existe... o importante é fazer uma classe depender o mínimo possível de outras... Conhecer UML ajuda muito, pq se no diagrama uma classe atira flecha pra tudo qto é lado, quer dizer q ela está mto acoplada... Nesse caso, tb é bom ter algum bom material sobre Padrões de Projeto (Design Patterns), pq muitos deles servem justamente pra diminuir o acoplamento.
Deixa eu ver se eu consigo imaginar exemplos de coesão e acoplamento... Lembrando-se q desejamos MUITA coesão e POUCO acoplamento!
public class Produto {
private double precoVenda, precoCompra;
public double calcularMargemLucro() {
// ... algum código
}
}
public class Venda {
private List<Produto> produtos;
public double calcularTotal() {
// ...
}
public double calcularLucroVenda() {
// ...
}
}
O que temos aqui? A classe Produto não depende de nenhuma outra classe (ao menos no trecho mostrado). Cada campo, argumento ou retorno de método, variável local que for de outra classe, é mais um acoplamento daquela classe.
A classe Venda é acoplada com Produto, depende dela pq tem uma lista de produtos e pra saber calcular o lucro.
As classes estão coesas (pelo menos eu acredito q estão, se alguém tiver algo contra indique!) pq cada produto sabe calcular sua margem de lucro, e o lucro da venda quem calcula é a própria venda, q tem todos os produtos! As responsabilidades estão bem distribuídas entre as classes.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/05/2010 07:47:05
|
itopaulo
Thread.start()
Membro desde: 31/08/2009 17:19:07
Mensagens: 27
Offline
|
Estou estudando para SCJP e me deparei com um dilema com relação a Acoplamento e Coesão. Bom entendi o conceito de cada um.. e como disseram num mundo ideal teriamos baixo acoplamento e alta coesão MAS se tivermos uma alta coesão com classes bem específicas isso não geraria um alto acoplamento também? Pois classes que utilizarem as classes coesas, utilizaram diversas outras classes coesas, deixando-a altamente acoplada. Como funciona no mundo real/comercial?
Obrigado
|
|
|
 |
|
|