Julgue o próximo item, a respeito de GRASP (general respons...
Um padrão que recomenda que uma classe tenha várias e diferentes responsabilidades, para que se aumente sua reutilização, é caracterizado como de alta coesão (high cohesion).
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: E - errado
Vamos entender o porquê da alternativa correta ser "Errado". A questão aborda conceitos de Acoplamento e Coesão no contexto de padrões de projeto de software, especificamente os padrões GRASP (General Responsibility Assignment Software Patterns).
Coesão refere-se ao grau em que os elementos dentro de um módulo pertencem juntos. Um módulo de alta coesão realiza uma única tarefa ou um grupo de tarefas relacionadas, enquanto um módulo de baixa coesão realiza múltiplas tarefas diferentes. Portanto, para que um módulo seja considerado de alta coesão, ele deve ter responsabilidades que sejam estreitamente relacionadas e focadas em uma única preocupação.
Vamos analisar a afirmação da questão: “Um padrão que recomenda que uma classe tenha várias e diferentes responsabilidades, para que se aumente sua reutilização, é caracterizado como de alta coesão.”
Essa afirmação está incorreta porque uma classe com várias e diferentes responsabilidades não possui alta coesão, mas sim baixa coesão. A alta coesão é alcançada quando uma classe tem responsabilidades que são intimamente relacionadas e focadas em uma única tarefa específica.
Além disso, vamos lembrar de um conceito importante relacionado: Acoplamento. Acoplamento refere-se ao grau de interdependência entre módulos. O ideal é ter baixo acoplamento, onde os módulos são independentes e podem ser alterados sem impactar uns aos outros. Alto acoplamento é geralmente indesejável porque aumenta a complexidade e dificuldade de manutenção do sistema.
Resumo dos conceitos:
- Alta coesão: Responsabilidades estreitamente relacionadas dentro de um módulo/classe.
- Baixa coesão: Múltiplas e diversas responsabilidades dentro de um módulo/classe.
- Baixo acoplamento: Pouca dependência entre módulos.
- Alto acoplamento: Alta dependência entre módulos.
Portanto, a afirmação da questão estava errada porque descreveu erroneamente o que caracteriza alta coesão. O correto seria afirmar que para ter alta coesão, uma classe deve ter responsabilidades relacionadas e focadas, e não várias e diferentes responsabilidades.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
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
High Cohesion (Alta Coesão) — este princípio determina que as classes devem se focar apenas na sua responsabilidade.
Fonte: https://medium.com/@leandrovboas/padr%C3%B5es-grasp-padr%C3%B5es-de-atribuir-responsabilidades-1ae4351eb204
Coesão refere-se à medida em que os componentes de uma classe ou módulo estão relacionados entre si e atuam em conjunto para realizar uma única tarefa ou responsabilidade. Alta coesão significa que uma classe tem uma única, bem-definida responsabilidade e todas as suas funcionalidades estão estreitamente relacionadas a essa responsabilidade.
Padrão que recomenda várias responsabilidades:
- Um padrão que recomenda que uma classe tenha várias e diferentes responsabilidades não está alinhado com o conceito de alta coesão. Em vez disso, isso pode levar a uma baixa coesão e, consequentemente, a uma classe menos compreensível e mais difícil de manter.
Alta Coesão (High Cohesion):
- Definição: Alta coesão é quando uma classe ou módulo realiza uma única responsabilidade ou um conjunto muito relacionado de responsabilidades. Isso resulta em uma classe mais focada, fácil de entender e mais fácil de manter e modificar.
- Objetivo: A alta coesão facilita a reutilização e a manutenção, porque o comportamento da classe está bem definido e todas as suas partes trabalham juntas para cumprir essa responsabilidade.
Baixa Coesão (Low Cohesion):
- Definição: Baixa coesão ocorre quando uma classe ou módulo realiza várias tarefas diferentes que não estão bem relacionadas entre si. Isso pode tornar a classe mais difícil de entender e manter, pois suas responsabilidades não estão claramente definidas ou agrupadas.
Portanto, o padrão que recomenda que uma classe tenha várias e diferentes responsabilidades é caracterizado por baixa coesão, não alta coesão. A alta coesão é desejada para promover uma melhor organização e modularidade do código.
Gabarito ERRADO
Uma classe que tem várias responsabilidades diferentes tende a ter baixa coesão, não alta coesão.
Fonte:
Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo