Pular para o conteúdo principal

Questão de Arquitetura de Software — MVC (Model-view-controller) — FCC 2022

Arquitetura de SoftwareMVC (Model-view-controller)
Código
fc062333
Banca
FCC
Órgão
PGE-AM
Ano
2022
Cargo
Técnico em Gestão Procuratorial Especialidade Engenharia de Software
Um Técnico observou que o padrão MVC define regras de como seus componentes devem se comunicar. Assim, está correto que
  1. AControllers não podem interagir com Views e Views podem interagir diretamente com o Model.
  2. BControllers não podem se comunicar com Models e Views podem interagir diretamente com outras Views.
  3. COs usuários não podem interagir diretamente com o Model e Controllers podem se comunicar com o Model.
  4. DOs usuários podem interagir diretamente com os Controllers e Views podem interagir diretamente com o Model.
  5. EControllers não podem interagir com Views e Controllers podem se comunicar com o Model.
Revelar gabarito e comentário

GabaritoC — Os usuários não podem interagir diretamente com o Model e Controllers podem se comunicar com o Model.

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 — Comunicação entre componentes

Gabarito: letra C. No padrão MVC, os usuários interagem exclusivamente com a camada Controller, nunca diretamente com o Model; já o Controller se comunica livremente com o Model para enviar comandos e atualizar dados. Essa é a divisão de responsabilidades clássica do MVC.

Contexto do padrão MVC

O MVC separa a aplicação em três componentes interconectados:

  • Model: gerencia os dados e a lógica de negócio. Não interage diretamente com o usuário.

  • View: exibe os dados do Model e encaminha as ações do usuário para o Controller.

  • Controller: recebe as entradas do usuário, interpreta-as e as envia ao Model e/ou à View para atualização.

As regras de comunicação são bem definidas:

  • O Controller pode se comunicar com o Model (enviando comandos) e com a View (alterando apresentação).

  • O Model notifica a View e o Controller sobre mudanças de estado, mas a View não invoca o Controller diretamente.

  • O usuário não interage diretamente com o Model; sua interação é sempre via Controller.

Análise das alternativas

Componente

Pode interagir com Model?

Pode interagir com View?

Pode interagir com usuário?

Observação

Controller

Sim (comandos/atualização)

Sim (alterar exibição)

Sim (recebe entradas)

Intermediário entre usuário e Model

View

Sim (consulta/notificação)

Não (no MVC clássico)

Sim (exibe dados, encaminha ações)

Não invoca Controller diretamente

Model

Sim (notifica mudanças)

Não

Gerencia dados/lógica; não interage com usuário

Usuário

Não

Sim (via View)

Interage exclusivamente via Controller

1Usuário
Interage com Model
Interage com Controller
2Controller
Comunica com Model
Comunica com View
3Model
Notifica View e Controller
View invoca Controller
MVC — Comunicação
LEVELsoulevel.com.br
MVC — Comunicação: Usuário (Interage com Model, Interage com Controller); Controller (Comunica com Model, Comunica com View); Model (Notifica View e Controller, View invoca Controller)

Alternativa A — ❌ Incorreta

Afirma que "Controllers não podem interagir com Views" — falso, pois o Controller pode sim enviar comandos para a View (ex.: alterar a exibição). Além disso, a parte sobre Views interagirem diretamente com o Model é controversa: embora a View possa consultar o Model, a comunicação padrão ocorre por notificação do Model, não por chamada direta da View.

Alternativa B — ❌ Incorreta

"Controllers não podem se comunicar com Models" é falso — o Controller é justamente o componente que comanda o Model. Quanto a "Views podem interagir diretamente com outras Views", isso não é previsto no MVC clássico; Views são independentes e só se comunicam via Controller/Model.

Alternativa C — ✅ Correta ⟵ GABARITO

Dois acertos:

  1. Usuários não podem interagir diretamente com o Model — a interação do usuário é sempre mediada pelo Controller, que recebe as ações (cliques, teclas) e as repassa ao Model ou à View.

  2. Controllers podem se comunicar com o Model — é a função primária do Controller: enviar comandos para atualizar o estado do Model.

Portanto, a alternativa reflete exatamente as regras de comunicação do padrão MVC.

Alternativa D — ❌ Incorreta

"Usuários podem interagir diretamente com os Controllers" é verdadeiro, mas "Views podem interagir diretamente com o Model" é uma meia-verdade: a View pode consultar o Model, mas a interação direta não é o fluxo principal; o Model notifica a View passivamente. A alternativa é menos precisa que a C, que destaca a restrição correta.

Alternativa E — ❌ Incorreta

"Controllers não podem interagir com Views" é falso (como visto na A). A segunda parte "Controllers podem se comunicar com o Model" é verdadeira, mas o erro na primeira torna a alternativa incorreta.

Gabarito: letra C.

Link permanente: /questoes/fc062333