Pular para o conteúdo principal

Questão de Programação — Programação Orientada a Objetos — Quadrix 2025

ProgramaçãoProgramação Orientada a Objetos
Código
qg603665
Banca
Quadrix
Órgão
SEDF
Ano
2025
Nível
Superior
Cargo
Professor de Educação Básica: Informática
Quanto aos algoritmos, à programação orientada a objetos e à arquitetura MVC, julgue o item seguinte.No padrão MVC, o Model deve ter acesso direto à interface gráfica (View), atualizando‑a sempre que houver mudança nos dados, sem passar pelo Controller.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

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: responsabilidades do Model, View e Controller

Gabarito: E — ERRADO. No padrão MVC, o Model não deve ter acesso direto à View; a comunicação entre eles ocorre sempre por intermédio do Controller. A afirmação inverte o fluxo de controle do padrão, que é justamente o papel do Controller de mediar as interações entre Model e View.

O padrão MVC (Model-View-Controller) é um dos estilos arquiteturais mais cobrados em concursos de TI. Ele organiza a aplicação em três componentes com responsabilidades bem definidas:

  • Model: representa os dados e a lógica de negócio. É a camada que conhece as regras do domínio, persiste informações e notifica mudanças de estado. O Model não conhece a View nem o Controller — ele é independente da interface.

  • View: é a camada de apresentação, responsável por exibir os dados ao usuário e capturar as interações. A View não contém lógica de negócio; ela apenas renderiza o que o Model fornece (via Controller).

  • Controller: é o intermediário. Ele recebe as requisições do usuário (via View), interpreta, aciona o Model para processar os dados e, em seguida, seleciona a View adequada para exibir o resultado. O Controller orquestra o fluxo.

A regra central do MVC é a separação de responsabilidades e o baixo acoplamento entre as camadas. O Model não pode "enxergar" a View, pois isso criaria uma dependência indesejada: qualquer alteração na interface exigiria modificação no Model, violando o princípio da responsabilidade única e dificultando a manutenção e os testes.

Na prática, quando o Model muda, ele notifica o Controller (ou um mecanismo de observação, como o padrão Observer), e o Controller decide como atualizar a View. Em frameworks web (como Spring MVC, ASP.NET MVC, Laravel), o fluxo típico é:

  1. O usuário interage com a View (ex.: clica em um botão).

  2. A View envia a requisição ao Controller.

  3. O Controller processa a requisição, chama o Model para obter/alterar dados.

  4. O Controller seleciona a View que renderizará a resposta, passando os dados do Model.

A pegadinha da banca está em afirmar que o Model atualiza a View diretamente, sem passar pelo Controller. Isso contraria o papel do Controller como mediador. Em algumas variações do MVC (como o MVVM), o Model pode notificar a View via data binding, mas no MVC clássico o Controller é o elo obrigatório.

NÃO CAIA NESSA!

A banca inverte o fluxo de comunicação do MVC. O candidato que decora apenas os nomes das camadas pode achar que o Model "atualiza a View" faz sentido, mas o Controller é quem faz a ponte. Lembre-se: Model não conhece View; Controller conhece ambos.

1Model
Dados e regras de negócio
Não conhece a View
Não conhece o Controller
2View
Apresentação
Sem lógica de negócio
3Controller
Intermediário
Recebe requisições
Aciona o Model
Seleciona a View
4Fluxo correto
Model → notifica → Controller
Controller → atualiza → View
MVC
LEVELsoulevel.com.br
MVC: Model (Dados e regras de negócio, Não conhece a View, Não conhece o Controller); View (Apresentação, Sem lógica de negócio); Controller (Intermediário, Recebe requisições, Aciona o Model, Seleciona a View); Fluxo correto (Model → notifica → Controller, Controller → atualiza → View)

Item — ❌ Errado

A afirmação está incorreta porque atribui ao Model um acesso direto à View, o que viola o princípio fundamental do MVC. O Model é a camada de dados e regras de negócio, e deve permanecer desacoplada da interface. A atualização da View é responsabilidade do Controller, que recebe as notificações de mudança do Model e decide como (e se) a View deve ser atualizada.

Se o Model tivesse acesso direto à View, teríamos um acoplamento indesejado: o Model dependeria da interface, dificultando a reutilização da lógica de negócio em diferentes contextos (web, desktop, mobile) e comprometendo a testabilidade. O fluxo correto é: Model → (notifica) → Controller → (atualiza) → View.

Gabarito: E — ERRADO.

Link permanente: /questoes/qg603665