Julgue o próximo item, a respeito de GRASP (general respo...

Próximas questões
Com base no mesmo assunto
Q2562287 Engenharia de Software
Julgue o próximo item, a respeito de GRASP (general responsibility assignment software patterns).

Determinar quando deve ser delegada a responsabilidade para outro objeto é responsabilidade do criador (creator).
Alternativas

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