Julgue o item a seguir, a respeito de padrões de projetos.No...
Julgue o item a seguir, a respeito de padrões de projetos.
No padrão GRASP, a alta coesão (high cohesion) serve para
mensurar quão fortemente uma classe está conectada a outras
classes
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta para a questão apresentada é errado (E).
Explicação:
O padrão GRASP (General Responsibility Assignment Software Patterns) é um conjunto de padrões que ajudam a atribuir responsabilidades aos objetos em projetos de software. Um dos princípios do GRASP é a alta coesão.
A alta coesão (high cohesion) refere-se a quão focadas e especializadas são as responsabilidades de uma classe. Uma classe com alta coesão tem suas responsabilidades muito bem definidas e relacionadas, o que facilita a manutenção e a compreensão do código, além de promover a reutilização.
Importante: A coesão não mede a conexão entre uma classe e outras classes. Esse conceito se refere à coesão interna da própria classe, ou seja, a relação entre os métodos e atributos dentro da classe.
O enunciado afirma que a alta coesão serve para mensurar quão fortemente uma classe está conectada a outras classes. Isso está incorreto.
Justificativa:
Correta: Errado (E)
A coesão mede a especialização e a relação focada das responsabilidades dentro de uma mesma classe, e não a conexão entre diferentes classes.
Incorreta: Certo (C)
Esta alternativa seria incorreta porque ela afirma algo que não corresponde ao conceito de alta coesão em padrões de projeto.
Em resumo, para entender e aplicar corretamente o conceito de alta coesão, lembre-se sempre de que ele se refere à organização interna e à especialização das responsabilidades dentro de uma classe, sem considerar suas conexões com outras classes.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
A questão trata do alto acoplamento.
O padrão high cohesion busca manter objetos apropriadamente focados, gerenciáveis e compreensíveis. Geralmente é utilizado para suportar o baixo acoplamento, enfatizando que as responsabilidades de um dado elemento são fortemente relacionadas e altamente focadas.
Não confundam esses dois padrões! Coesão trata de divisão de responsabilidades e Acoplamento trata da dependência entre partes/componentes. A questão trata do segudo caso: Acoplamento.
Low Coupling:
Esse padrão é responsável por ditar como atribuir responsabilidades para apoiar baixa dependência entre classes, como suportar mudanças em uma classe que tenham baixo impacto em outras classes, e maior potencial de reúso. O acoplamento está sempre associado à coesão. Eu sempre decorei assim: “Acoplamento é a dependência entre as partes”.
Problema
Como gerenciar a complexidade?
A coesão mede quão relacionadas ou focadas estão as responsabilidades da classe
Uma classe com baixa coesão faz muitas coisas não relacionadas e leva aos seguintes problemas:
Difícil de entender
Difícil de reusar
Difícil de manter
"Delicada": constantemente sendo afetada por outras mudanças
Uma classe com baixa coesão assumiu responsabilidades que pertencem a outras classes
Solução
Atribuir responsabilidades que mantenham alta coesão
Fonte : http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/pat/altacoesao.htm
Acoplamento é a dependência entre as partes. Essa é um característica que se deseja minimizar em um projeto.
Coesão é a divisão de responsabilidade entre as partes. Deseja-se ter um nível alto de coesão.
Acoplamento e coesão são, em geral, inversamente proporcionais, falando a grosso modo.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo