O GRASP (general responsibility assignment software patterns) define princípios básicos padrões de projetos orientados a objetos. Considere os seguintes questionamentos, feitos no âmbito de um sistema escolar onde se conhece a média total do resultado de um aluno. • Para se conhecer a média total do resultado de um aluno, qual princípio vai se direcionar para encontrar a classe de objetos adequada para receber essa responsabilidade? • Nesse caso, qual princípio GRASP procura identificar a classe de objetos que tem a informação necessária para a determinação da média? Assinale a opção que apresenta o princípio GRASP presente nos referidos questionamentos.
- A)especialista na informação (information expert)
Certa, porque o princípio information expert atribui a responsabilidade à classe que possui os dados necessários para calcular a média.
- B)acoplamento baixo (low coupling)
Errada, porque low coupling trata de diminuir dependências entre classes, e não de escolher quem deve calcular a média.
- C)coesão alta (high cohesion)
Errada, porque high cohesion busca concentrar responsabilidades relacionadas na mesma classe, mas não responde diretamente sobre quem tem a informação para o cálculo.
- D)controlador (controller)
Errada, porque controller recebe e coordena requisições do sistema, mas não é o princípio voltado a localizar a classe com os dados da média.
- E)criador (creator)
Errada, porque creator trata de quem deve criar objetos, e não de atribuir a responsabilidade pelo cálculo da média.
Gabarito: A
O GRASP é um conjunto de princípios usados para ajudar você a distribuir responsabilidades entre classes de forma inteligente. A ideia não é decorar nomes bonitos, e sim perguntar: quem deve fazer o quê dentro do sistema? Em concurso, a banca adora trocar isso por uma situação concreta, como calcular a média de um aluno no sistema escolar. Nesse caso, o princípio correto é o especialista na informação (information expert). Ele diz que a responsabilidade deve ficar com a classe que já possui os dados necessários para executá-la. Se a classe Aluno tem as notas, faltas ou resultados necessários, faz sentido que ela mesma, ou a classe que concentra essas informações, seja responsável por calcular a média. Perceba o raciocínio: você olha para onde a informação está e, a partir daí, decide quem deve responder pela operação. Isso evita gambiarra de espalhar lógica por várias classes e deixa o sistema mais organizado. Na prática, é um princípio bem intuitivo: quem conhece o dado, faz o cálculo. Por isso o gabarito é a letra A. Não se trata de quem cria objetos, nem de quem controla fluxo, nem de reduzir acoplamento ou aumentar coesão diretamente, embora tudo isso possa conversar entre si. Aqui, o foco é localizar a responsabilidade na classe que detém a informação necessária para determinar a média.