Questão de Arquitetura de Software — MVC (Model-view-controller) — CESPE / CEBRASPE 2024
Arquitetura de Software›MVC (Model-view-controller)
Código
ce176008
Banca
CESPE / CEBRASPE
Órgão
LNA
Ano
2024
Nível
Superior
Cargo
Tecnologista – Especialidade: Desenvolvimento e Arquitetura de Software
Com base no padrão de arquitetura de software MVC (model-view-controller), assinale a opção correspondente à atribuição do controller.
Areunir os métodos que alteram o estado dos objetos de domínio
Bfazer a seleção da resposta da visão
Cpreparar os dados do modelo para atender às solicitações dos clientes
Dreunir todos os dados da WebApp
Etratar as solicitações recebidas para a mudança de comportamento do modelo
Revelar gabarito e comentário▾
GabaritoB — fazer a seleção da resposta da visão
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Padrão MVC (Model-View-Controller) — Atribuição do Controller
Gabarito: letra B. No padrão MVC, o controller atua como intermediário entre a view e o model, recebendo as requisições do usuário, interpretando-as, interagindo com o model e, em seguida, selecionando a view (resposta) adequada para exibir o resultado. É exatamente isso que a alternativa B descreve: "fazer a seleção da resposta da visão" — o controller decide qual view será renderizada. As demais alternativas atribuem ao controller funções que são, na verdade, responsabilidade do model ou da view.
A banca cobra a distinção clara dos papéis de cada componente. O controller não manipula dados nem contém lógica de negócio; ele apenas coordena o fluxo. A definição clássica do padrão MVC (Gamma et al., 1994) estabelece que o controller mapeia a entrada do usuário para ações do model e seleciona a view seguinte. O material de apoio e confirma: o controller "interpreta entradas do usuário e interage com o Modelo", "Atualiza a Visão conforme necessário" e "faz a seleção da resposta da visão" é o ato de decidir qual visão apresentar.
MVC — Controller: Função central; Intermediário entre View e Model; Recebe requisições do usuário; Interpreta entradas; Interage com o Model; Seleciona a View de resposta; Não faz; Manipula dados (Model); Contém lógica de negócio (Model); Prepara dados (Model); Reúne todos os dados (Model)
Alternativa A — ❌ Incorreta
Reunir métodos que alteram o estado dos objetos de domínio é função do model, não do controller. O model encapsula a lógica de negócio e gerencia o estado. O controller, por sua vez, invoca esses métodos, mas não os "reúne" — ele apenas delega.
Alternativa B — ✅ Correta ⟵ GABARITO
A seleção da resposta da visão é atribuição central do controller. Após processar a requisição e interagir com o model, o controller escolhe qual view (template, página, componente) será retornada ao cliente. É o que garante a separação entre a lógica de fluxo (controller) e a apresentação (view).
Alternativa C — ❌ Incorreta
Preparar os dados do modelo para atender às solicitações é responsabilidade do model, que gerencia a lógica de acesso e preparação dos dados. O controller apenas solicita ao model que execute ações, mas não prepara os dados diretamente.
Alternativa D — ❌ Incorreta
"Reunir todos os dados da WebApp" é uma afirmação genérica e inadequada: nenhum componente reúne "todos" os dados. O model gerencia dados específicos; o controller não é um agregador de dados.
Alternativa E — ❌ Incorreta
"Tratar as solicitações recebidas para a mudança de comportamento do modelo" — embora o controller trate as solicitações, a finalidade não é "mudar o comportamento" do model (que é fixo, definido pelas regras de negócio), mas sim alterar seu estado (chamando métodos do model). O controller não altera o comportamento (algoritmos, regras); quem o faz é o model. A redação "mudança de comportamento" é imprecisa e leva ao erro.
NÃO CAIA NESSA!
A alternativa E parece tentadora, pois o controller realmente "trata solicitações", mas a banca explora o termo "comportamento" para confundir: controller não muda o comportamento do model, apenas invoca suas operações. A pegadinha está em atribuir ao controller uma responsabilidade que é do domínio.