Documente Academic
Documente Profesional
Documente Cultură
Buscar
post favoritocomentrios
Curtir
Gostei (6)
(1)
LOGIN
Introduo
Acoplamento fraco um dos principais requisitos para se construir software orientado a objetos (OO) de qualidade. O acoplamento fraco mede o quanto uma classe, depende de, ou est relacionada a, outra classe ou subsistema. A capacidade de uma classe em herdar o
www.devmedia.com.br/acoplamento-fraco-x-heranca/3714
1/11
26/03/14
comportamento de outra(s) uma das principais caractersticas do paradigma OO. A principal vantagem poder criar novas classes quase de graa, aproveitando o cdigo de outra. Esse artigo discute esses dois conceitos e mostra porque a herana, em geral, ajuda a comprometer o acoplamento fraco.
Acoplamento fraco
Uma classe com acoplamento forte depende muito (em geral sem necessidade) de outras. Isso pode conduzir aos seguintes problemas [Larman]:
classes difceis de aproveitar tendo em vista que sempre que esta for
utilizada todas as outras das quais ela depende devem estar presentes; alteraes nas classes relacionadas podem forar mudanas locais e so difceis de compreender isoladamente.
Formas comuns de acoplamento ocorrem atravs de: variveis de instncia, variveis locais a mtodos ou de seus argumentos, chamada de servios em outra classe, uma classe deriva direta ou indiretamente de outra ou uma classe implementa uma determinada interface. Resumindo, sempre que uma classe referencia um outro tipo em qualquer uma das circunstncias acima est ocorrendo acoplamento. Considere o cdigo:
www.devmedia.com.br/acoplamento-fraco-x-heranca/3714
2/11
26/03/14
Existem dois pontos principais de acoplamento, na varivel de instncia var1, que do tipo ClasseConcretaY, e no argumento var2, que do tipo ClasseConcretaW. Nestas duas partes do cdigo a classe X referencia outras duas classes concretas. Isso significa que, sempre que esta classe for utilizada, as outras duas devero estar disponveis no espao de nomes do programa. No caso de Java, o(s) pacote(s) onde estas se encontram dever(o) estar no classpath. Mas, referenciar outras classes sempre causa problemas de acoplamento? A resposta , depende! Referenciar classes estveis e disseminadas raramente um problema. Por exemplo, utilizar o pacote java.util num programa em Java dificilmente causar problemas futuros de acoplamento, uma vez que qualquer ambiente de execuo Java contm essa biblioteca. O problema est em classes instveis, pouco conhecidas, ou seja, nas classes que so criadas para atender os problemas especficos dos projetos.
os clientes (usurios da classe) permanecem sem conhecimento dos tipos especficos dos objetos que eles usam, contanto que os objetos tenham aderncia interface que os clientes esperam, os clientes permanecem sem conhecimento das classes que implementam estes objetos; eles somente tm conhecimento das classes abstratas que definem a interface.
www.devmedia.com.br/acoplamento-fraco-x-heranca/3714
3/11
26/03/14
Herana
A herana a principal caracterstica de distino entre um sistema de programao orientado a objeto e outros sistemas de programao. As classes so inseridas em uma hierarquia de especializaes de tal forma que uma classe mais especializada (subclasse) herda todas as propriedades da classe mais geral (superclasse) a qual subordinada na hierarquia. O principal benefcio da herana o reaproveitamento de cdigo. A herana permite ao programador criar uma nova classe programando somente as diferenas existentes na subclasse em relao superclasse. Isto se adeqa bem a forma como compreendemos o mundo real, no qual conseguimos identificar naturalmente estas relaes. A reutilizao por meio de subclasses dito reutilizao de caixa branca, pois usualmente expe o interior das classes ancestrais para as subclasses. A herana definida estaticamente em tempo de compilao e simples de utilizar, uma vez que suportada diretamente pela linguagem de programao.
www.devmedia.com.br/acoplamento-fraco-x-heranca/3714
4/11
26/03/14
www.devmedia.com.br/acoplamento-fraco-x-heranca/3714
5/11
26/03/14
public int CalculaMaximo( int i) { return ( int ) i * (MAX /100); // Aproxima o resultado com cast }
Essa alterao na maneira como o mximo est sendo calculado pode gerar efeitos
www.devmedia.com.br/acoplamento-fraco-x-heranca/3714
6/11
26/03/14
colaterais na classe Y. A aproximao para inteiro pode funcionar para alguns mtodos que usam a CalculaMaximo() mas provocar resultados errneos na UsaMetodoDaClasseX(). Assim, para que a classe Y continue funcionando, esta precisaria ser adaptada nova realidade. Problemas podem ocorrer tambm quando estruturas de dados visveis nas classes derivadas so alteradas. Um array bidimensional transformado para vetor ou mesmo um tipo int modificado para float certamente acarretar problemas. Este exemplo simples ajuda a mostrar como uma alterao na implementao de um mtodo numa classe base pode provocar anomalias nas suas classes derivadas. Observe que no ocorreu uma alterao de interface, o que necessariamente (e notoriamente) implica em alteraes nas classes clientes. por isso que a herana, em particular, revela um alto acoplamento. Alm das hierarquias de classes criadas estarem suscetveis s mudanas de interface, esto suscetveis tambm s alteraes nas implementaes dos mtodos. Quando uma subclasse redefine algumas, mas no todas as operaes, ela tambm pode afetar as operaes que herda, assumindo-se que elas chamam as operaes redefinidas [Gamma]. Isso gera um efeito semelhante ao apresentado acima, porm no sentido oposto, onde alteraes nas classes mais especializadas podem gerar problemas nas classes base. Se a classe Y tivesse sobrescrito o mtodo CalculaMaximo(), o problema com a aproximao poderia ocorrer no mtodo UsaMaximo() da classe X.
www.devmedia.com.br/acoplamento-fraco-x-heranca/3714
7/11
26/03/14
Concluso
Evitar herana e privilegiar a composio em geral uma boa prtica em projetos orientados a objetos. Favorecer a composio de objetos em relao herana ajuda a manter cada classe encapsulada e focalizada em uma nica tarefa. Suas classes e hierarquias de classes se mantero pequenas e mais tratveis [Gamma]. Alm disso, vimos como e porqu a utilizao da herana resulta num alto acoplamento e os problemas que isso pode acarretar.
Bibliografia
[Gamma] Gamma, E; Helm, R; Johnson, R; Vlissides, J. Padres de Projeto Solues Reutilizveis de Software Orientado a Objetos, Bookman, 2000.
ChristianCleberMasdevalBraz
ChristianCleberMasdevalBraz(masdeval@yahoo.com.br)bacharelemCinciadaComputaopela UFMS.Em2004concluiuomestrado,tambmnaquelainstituio,nareadeintelignciaartificiale problemascombinatoriaisdifceis[...]
www.devmedia.com.br/acoplamento-fraco-x-heranca/3714
8/11
26/03/14
Publicidade
undefined
Servios
Inclua um comentrio Adicionar aos Favoritos Marcar como lido/assistido Incluir anotao pessoal
+Java
www.devmedia.com.br/acoplamento-fraco-x-heranca/3714
9/11
26/03/14
Mais posts
Artigo
Removendo a Venda - Curso JBoss: Introduo e Aplicao MVC completa - Aula 140
Video aula
Editando a Venda - Curso JBoss: Introduo e Aplicao MVC completa - Aula 139
Video aula
Criando conversores e gravando a Venda - Curso JBoss: Introduo e Aplicao MVC completa - Aula 138
www.devmedia.com.br/acoplamento-fraco-x-heranca/3714 10/11
26/03/14
Artigo
DevMedia
Curtir
21.331pessoascurtiramDevMedia.
PluginsocialdoFacebook
HospedagemwebporPorta80WebHosting TodososDireitosReservadosaWeb03
www.devmedia.com.br/acoplamento-fraco-x-heranca/3714
11/11