Questão de TI - Desenvolvimento de Sistemas — MVC (Model-View-Controller) — INSTITUTO AOCP 2024
TI - Desenvolvimento de Sistemas›MVC (Model-View-Controller)
Código
qa631175
Banca
INSTITUTO AOCP
Órgão
DPE MS
Ano
2024
Cargo
Ana Def ( )
A respeito do Padrão Arquitetural Model-View-Controller (MVC), analise as assertivas e assinale a alternativa que aponta as corretas.
I. Esse padrão consiste na separação dos dados, da apresentação e do controlador que realizará o gerenciamento das relações entre o modelo e a apresentação.
II. Uma de suas classes, denominada domínio, é independente da interface do sistema; com isso, a interface pode ser alterada sem afetar a classe de domínio.
III. A sequência das operações desse padrão é normalmente encapsulada na classe de controle.
IV. A classe de controle obtém informações das classes de interface e domínio, e a classe de interface também obtém informações das classes de controle e domínio.
AApenas I, II e III.
BApenas I, II e IV.
CApenas II e III.
DApenas I e IV.
EI, II, III e IV.
Revelar gabarito e comentário▾
GabaritoE — I, II, III e IV.
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 Arquitetural MVC (Model-View-Controller)
Gabarito: letra E — todas as assertivas (I, II, III e IV) estão corretas. O MVC é um padrão arquitetural que separa a aplicação em três componentes interligados — Model (dados/regras de negócio), View (apresentação/interface) e Controller (gerenciamento das interações entre Model e View) — e as quatro afirmativas descrevem corretamente essa estrutura e o fluxo de comunicação entre as classes.
O padrão MVC (Model-View-Controller) é um dos estilos arquiteturais mais difundidos no desenvolvimento de software, especialmente em aplicações web e desktop. Sua essência é a separação de responsabilidades (Separation of Concerns): cada componente tem um papel bem definido e as dependências entre eles são controladas para que a manutenção e a evolução do sistema sejam mais fáceis. O Model representa os dados e as regras de negócio, sendo totalmente independente da interface; a View é responsável pela apresentação desses dados ao usuário; e o Controller atua como o intermediário, recebendo as requisições do usuário, processando-as (com auxílio do Model) e devolvendo a resposta adequada à View.
A grande vantagem desse padrão é a baixa dependência entre as camadas. Como o Model não conhece a View, é possível alterar completamente a interface do sistema (por exemplo, migrar de uma interface desktop para uma web) sem que as regras de negócio sejam afetadas. Essa é a base da assertiva II, que fala da classe de domínio (Model) ser independente da interface. O Controller, por sua vez, encapsula a sequência de operações necessárias para atender a uma requisição — é ele que orquestra o fluxo, decidindo qual dado buscar no Model e qual apresentação devolver ao usuário (assertiva III).
Na prática, o fluxo típico do MVC funciona assim: o usuário interage com a View (por exemplo, clica em um botão); a View envia a ação para o Controller; o Controller consulta ou atualiza o Model; o Model retorna os dados ao Controller; e o Controller seleciona a View apropriada para exibir o resultado. Perceba que a View não acessa diretamente o Model — ela depende do Controller para obter os dados. Porém, em muitas implementações, a View também pode consultar o Model diretamente (especialmente em padrões como o MVC passivo ou o Model-View-Presenter), o que torna a assertiva IV correta ao afirmar que a classe de controle obtém informações das classes de interface e domínio, e a classe de interface também obtém informações das classes de controle e domínio.
A banca explora aqui um ponto que costuma gerar confusão: a direção das dependências. Muitos candidatos acreditam que a View nunca pode acessar o Model diretamente, mas isso não é uma regra absoluta do MVC — em diversas implementações (como no MVC clássico do Smalltalk ou em frameworks como o ASP.NET MVC), a View pode sim consultar o Model para exibir dados, embora o Controller seja o principal orquestrador. O que é inegociável é que o Model não conhece a View, garantindo a independência da camada de domínio. Guarde essa distinção: Model não depende de View; View pode depender de Model e Controller; Controller depende de ambos.
Assertiva
Descrição
Veredito
I
Separação dos dados, da apresentação e do controlador que gerencia as relações entre o modelo e a apresentação.
✅ Correta
II
A classe de domínio (Model) é independente da interface; a interface pode ser alterada sem afetar a classe de domínio.
✅ Correta
III
A sequência das operações do padrão é normalmente encapsulada na classe de controle (Controller).
✅ Correta
IV
A classe de controle obtém informações das classes de interface e domínio; a classe de interface também obtém informações das classes de controle e domínio.
✅ Correta
MVC (Model-View-Controller): Model (domínio) (Dados e regras de negócio, Independente da interface); View (apresentação) (Interface com o usuário, Obtém dados do Controller e do Model); Controller (controle) (Gerencia Model e View, Encapsula a sequência de operações)
Item I — ✅ Correto
A assertiva afirma que o padrão consiste na separação dos dados, da apresentação e do controlador que gerencia as relações entre o modelo e a apresentação. Isso é exatamente a definição do MVC: o Model (dados), a View (apresentação) e o Controller (gerenciador das relações entre Model e View). A separação em três componentes interligados é a essência do padrão, e o Controller é quem media a comunicação entre os outros dois. Portanto, a afirmativa está correta.
Item II — ✅ Correto
A assertiva diz que a classe de domínio (Model) é independente da interface do sistema, permitindo que a interface seja alterada sem afetar a classe de domínio. Isso é um dos principais benefícios do MVC: o Model encapsula as regras de negócio e os dados, sem nenhuma referência à View. Assim, é possível trocar a interface (por exemplo, de uma aplicação desktop para uma web) sem modificar a lógica de negócio. A afirmativa está correta.
Item III — ✅ Correto
A assertiva afirma que a sequência das operações do padrão é normalmente encapsulada na classe de controle. De fato, o Controller é responsável por orquestrar o fluxo de execução: ele recebe a requisição do usuário, decide qual operação realizar no Model e qual View renderizar como resposta. Essa sequência de passos (receber entrada, processar, selecionar a saída) é encapsulada no Controller, que atua como o "maestro" da aplicação. A afirmativa está correta.
Item IV — ✅ Correto
A assertiva afirma que a classe de controle obtém informações das classes de interface e domínio, e a classe de interface também obtém informações das classes de controle e domínio. Isso descreve corretamente o fluxo de comunicação no MVC: o Controller recebe entradas da View (interface) e consulta/atualiza o Model (domínio); a View, por sua vez, pode obter dados tanto do Controller (que lhe entrega o resultado processado) quanto diretamente do Model (em implementações que permitem essa consulta direta). Portanto, a afirmativa está correta.
Conclusão: todas as assertivas (I, II, III e IV) estão corretas, portanto a alternativa é a letra E.