Com relação aos padrões GRASP, assinale a opção correta.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Vamos analisar a questão e as respectivas alternativas para entender o tema dos padrões GRASP (General Responsibility Assignment Software Patterns ou Padrões de Atribuição de Responsabilidade de Software). O gabarito correto é a alternativa E, e iremos justificar o motivo.
Alternativa E (Correta): O Especialista na Informação (Information Expert) é um padrão que associa a responsabilidade às classes que possuem a informação necessária para cumprir com essa responsabilidade. Esse padrão visa atribuir tarefas a quem tem o conhecimento ou dados necessários para realizá-las de maneira eficiente. Isso é fundamental para manter a lógica do sistema coesa e bem organizada.
Alternativa A (Incorreta): O conceito de Acoplamento Baixo (Low Coupling) refere-se à minimização das dependências entre classes para aumentar a modularidade e facilitar a manutenção do sistema. No entanto, a descrição apresentada na alternativa está incorreta ao associar o acoplamento baixo à atribuição de responsabilidade ao primeiro objeto além da camada de interface com o usuário, pois este é um conceito mais geral e não se limita à camada de interface.
Alternativa B (Incorreta): O Controlador (Controller) é um padrão utilizado para lidar com a coordenação de tarefas e a manipulação de eventos do sistema, e não especificamente para a criação de instâncias de classes. A criação de instâncias de classes é mais bem tratada pelo padrão Criador (Creator), e a descrição na alternativa não reflete corretamente a função principal do Controller em GRASP.
Alternativa C (Incorreta): A Alta Coesão (High Cohesion) é um padrão que se concentra em manter uma classe focada em poucas responsabilidades relacionadas, melhorando a manutenibilidade e a clareza do código. A alternativa mencionada está incorreta ao afirmar que a alta coesão está relacionada à independência de uma classe em relação a outras. Na verdade, ela se refere à coesão interna da própria classe, garantindo que suas responsabilidades sejam bem definidas e inter-relacionadas.
Alternativa D (Incorreta): O Criador (Creator) define quem deve ser responsável pela criação de um objeto. Se a classe A usa, contém ou agrega a classe B, então A deve ser responsável pela criação de B. A descrição na alternativa está incorreta ao atribuir à classe B a responsabilidade de criar uma instância de A, quando na verdade seria o contrário.
Espero que com essa explicação você tenha compreendido melhor os padrões GRASP e a justificativa para cada alternativa. Caso tenha mais dúvidas, estou à disposição para ajudar!
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
Vamos analisar cada uma das opções:
b) O controlador (controller) permite solucionar problemas no controle de criação de instâncias de classes. Nesse sentido, se a classe X contiver dados iniciais da classe Y ou se X usar de maneira muito próxima Y, caberá a X criar instâncias de Y, em que o controller representaria o padrão mais indicado para solucionar esse problema. (INCORRETO) O padrão que controle a criação de instâncias de classes é o padrão CREATOR, e não o controlador.
c) A alta coesão (high cohesion) é um padrão utilizado para aprimorar a ligação entre as classes, permitindo que a classe A não dependa de outras classes. Esse padrão é considerado o princípio central e útil em projetos orientados a objetos que utilizam GRASP (INCORRETO) Quando pensamos em dependência entre classes, o padrão a ser lembrado é o padrão BAIXO ACOPLAMENTO, e não o alta coesão.
d) O criador (creator) é utilizado para a solução do problema de quem cria a instância de uma classe com objetos do modelo de domínio. Nesse caso, se A registra B, então atribui-se à classe B a responsabilidade de se criar uma instância de A. (INCORRETO) Se A registra B, quem deve registrar B é a classe A, e não o contrário!
e) O especialista na informação (information expert) associa-se ao mapeamento de responsabilidade em que se procura atribuir responsabilidade à classe que tenha informação necessária para satisfazê-la. (CORRETA) Realmente é o padrão ESPECIALISTA que é responsável por atribuir responsabilidades a cada uma das classes!
GRASP - Expert
•Problema :
–Qual é o princípio mais básico de atribuição de responsabilidades em projeto OO?
–Em um sistema com centenas de classes, como selecionamos quais responsabilidades devem estar em quais classes?
–Exemplo: Em um sistema de PDV, quem deveria ser o responsável pelo cálculo do total de um pedido?
•Solução:
–Atribuir a responsabilidade ao especialista
–O especialista é a classe que tem a informação necessária para satisfazer a responsabilidade
–Exemplo: Em um sistema de PDV, o responsável pelo cálculo do total de um pedido deveria ser a própria classe Pedido
É o padrão mais usado para atribuir responsabilidades.
Gabarito: Letra E.
Também conhecido como Information Expert, esse padrão é utilizado para determinar para quem delegar as responsabilidades. Essas responsabilidades incluem métodos, campos calculados, etc.
Deve-se atribuir a responsabilidade ao especialista da informação, isto é., a classe que possui a informação necessária para satisfazer essa responsabilidade.
Fonte: Estratégia Concursos
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo