Padrões GRASP comunicam princípios fundamentais de atribuição de responsabilidades em um projeto orientado a objetos e oferecem soluções idiomáticas que guiam os projetistas na criação de software. De acordo com esses padrões, um princípio fundamental, segundo o qual as responsabilidades são atribuídas em projetos orientado a objetos, é
- A)atribuir responsabilidade de maneira que o acoplamento entre classes permaneça forte.
Errada, porque o objetivo é reduzir o acoplamento entre classes, e não mantê-lo forte.
- B)atribuir responsabilidade à classe que tem a informação necessária para satisfazer a responsabilidade.
Certa, porque descreve o princípio do Information Expert: a responsabilidade vai para quem tem a informação necessária.
- C)atribuir responsabilidades de forma que a coesão das classes permanece baixa.
Errada, porque o GRASP busca alta coesão, não baixa coesão.
- D)atribuir a responsabilidade do tratamento dos eventos de sistema de um mesmo caso de uso a múltiplas classes.
Errada, porque o tratamento de eventos de um caso de uso não deve ser pulverizado sem critério entre várias classes.
- E)atribuir um conjunto de responsabilidades sem coesão a uma classe artificial para permitir a reutilização.
Errada, porque criar uma classe artificial sem coesão para concentrar responsabilidades fere os princípios de bom design.
Gabarito: B
GRASP é um conjunto de princípios usados para distribuir responsabilidades em um projeto orientado a objetos sem virar uma salada de classes. A ideia é ajudar voce a decidir quem faz o quê, buscando um sistema mais coeso, mais fácil de manter e com menos dependências desnecessárias. Nesta questão, a banca cobra o princípio da Information Expert, também chamado de Especialista em Informação. Ele diz que a responsabilidade deve ser atribuída à classe que possui os dados necessários para cumpri-la. Faz sentido prático: quem conhece a informação certa costuma ser o melhor candidato para usá-la sem espalhar lógica pelo sistema inteiro. É por isso que o gabarito é a alternativa B. Se a classe já detém a informação necessária, ela consegue executar a responsabilidade de forma mais natural, reduzindo acoplamento e evitando que outra classe tenha que ficar perguntando tudo para todo mundo. Menos "fofoca entre objetos", mais organização. As demais alternativas vão na contramão dos princípios do GRASP. Elas falam em acoplamento forte, baixa coesão e distribuição exagerada de responsabilidades, que são justamente sinais de um desenho ruim. Em prova, quando aparecer GRASP, pense sempre em coesão, responsabilidade bem distribuída e especialização adequada de cada classe.