Julgue o próximo item, a respeito de GRASP (general respo...
Determinar quando deve ser delegada a responsabilidade para outro objeto é responsabilidade do criador (creator).
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: E - errado.
Vamos entender melhor o tema abordado na questão: o GRASP, que é um acrônimo para General Responsibility Assignment Software Patterns (Padrões Gerais de Atribuição de Responsabilidade de Software). Ele é um conjunto de diretrizes que ajudam na atribuição de responsabilidades a classes e objetos em projetos de software orientados a objetos.
Dentro do conjunto de padrões GRASP, temos padrões como Creator, Controller, Information Expert, Low Coupling, High Cohesion, Polymorphism, Pure Fabrication, Indirection e Protected Variations. Cada um desses padrões tem um propósito específico e ajuda a resolver problemas comuns na atribuição de responsabilidades.
No enunciado, menciona-se que "Determinar quando deve ser delegada a responsabilidade para outro objeto é responsabilidade do criador (creator)", o que está incorreto. A responsabilidade de delegar tarefas, ou seja, decidir qual objeto deve realizar determinada tarefa, é tratada por outro padrão do GRASP, não pelo Creator.
O papel do Creator é específico: ele determina qual classe é responsável por instanciar objetos de outra classe. Em termos simples, o Creator sugere que uma classe deve ser responsável pela criação de instâncias de outra classe se, por exemplo:
- Ela contém ou agrega a instância a ser criada.
- Ela usa a instância que será criada.
- Ela tem os dados que são passados para a instância.
- Ela tem a responsabilidade de inicializar a instância.
Por outro lado, a responsabilidade de delegar tarefas a outros objetos é geralmente coberta pelo padrão Controller. O Controller atua como um intermediário que delega a execução de uma tarefa para objetos especializados, mantendo, assim, uma separação de responsabilidades e promovendo um design mais coeso e flexível.
Portanto, a alternativa está errada porque confunde a responsabilidade do padrão Creator com a de outro padrão do GRASP que trata da delegação de tarefas.
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
Information Expert (Especialista na Informação) — Determina quando devemos delegar a responsabilidade para um outro objeto que seja especialista naquele domínio.
Fonte: https://medium.com/@leandrovboas/padr%C3%B5es-grasp-padr%C3%B5es-de-atribuir-responsabilidades-1ae4351eb204
Gabarito ERRADO
O descrito na questão trata-se do padrão Information Expert.
Fonte: https://blog.grancursosonline.com.br/padroes-de-projetos-grasp-controller-e-expert/
ERRADO
Cespe tem um fetiche por esse padrão. Cuidado, pois ela mistura os conceitos.
Especialista na Informação (Information Expert):
- Responsabilidade atribuída à classe/objetos que possui as informações necessárias para cumprir uma determinada tarefa.
- Information Expert (Especialista na Informação) — Determina quando devemos delegar a responsabilidade para um outro objeto que seja especialista naquele domínio.
- Solução: Atribua a responsabilidade ao especialista: a classe que tem as informações necessárias para assumir a responsabilidade.
Onde já caiu:
Q.P. - Ano: 2022 Banca: CESPE / CEBRASPE [x]
Q.P. - Ano: 2022 Banca: CESPE / CEBRASPE Órgão: DPE-RO [x]
Q.P. - Ano: 2023 Banca: FGV Órgão: Câmara dos Deputados [x]
Q.P. - Ano: 2024 Banca: CESPE / CEBRASPE Órgão: CNJ [x]
Criador (Creator):
- A classe responsável pela criação de instâncias de outras classes deve ser aquela que contém a maior parte das informações necessárias para a criação.
- O padrão Creator atribui a responsabilidade de criação de objetos entre duas classes A e B. Para uma classe B ter a responsabilidade de criar instâncias de outra classe A, ele deve obedecer a mais de um dos requisitos abaixo:
- B agrega objetos da classe A.
- B contém objetos da classe A.
- B registra instâncias da classe A.
- B usa muitos objetos da classe A.
- B possui os dados usados para inicializar A.
go@head2!
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo