-
O modelo (model) é usado para definir e gerenciar o domínio da informação e notificar observadores sobre mudanças nos dados. Ele é uma representação detalhada da informação que a aplicação opera. A lógica de negócio adiciona valor semântico aos dados, e quando há mudança de estado o modelo notifica seus observadores. Por exemplo, aluno, professor e turma fazem parte do domínio de um sistema acadêmico. Operações como calcular a média final do aluno ou o índice de faltas da turma fazem parte da lógica de domínio. A forma como o dado é armazenado ou acessado não é de interesse do MVC, assume-se que é de responsabilidade do modelo.
A visão (view) apresenta o modelo num formato adequado ao utilizador, na saída de dados, e diferentes visões podem existir para um mesmo modelo, para diferentes propósitos.
O controlador (controller) recebe a entrada de dados e inicia a resposta ao utilizador ao invocar objetos do modelo, e por fim uma visão baseada na entrada. Ele também é responsável pela validação e filtragem da entrada de dados.
-
Caros, quem retorna a resposta do modelo para a visão não seria o controlador?
-
Sempre soube que quem notifica à Visão sobre alterações seria o controlador e não o modelo.
-
-
-
a) Modelo: encapsula estado de aplicação; responde a consultas de
estado; expõe funcionalidade de aplicação; (4) notifica à Visão
sobre
alterações. -
(3) terceira declaração da a: O
termo expõe ficou forçado, porque quem expõe alguma coisa para o
usuário é a visão apesar de os dados terem fonte o modelo. Só se eles
consideraram expor para a visão que então passa para o usuário, que está OK.
(4) quarta declaração da a: Segundo o
Pressman, [ pag(443, 6ª edição) ] o modelo entra direto em contato com a
visão para anunciar que os dados estão atualizados. Já a visão faz
solicitação da atualização para o modelo. -
Mais correta, já que as outras estão bem erradas.
b) Visão: exibe ações do Modelo graficamente; impede atualizações ao Modelo; impede que o Controlador selecione a Visão. Só a primeira correta. Nas outras um não antes das declarações as tornariam corretas.
c) Controlador: tem comportamento pautado pela aplicação; modela
ações do usuário vinculando requisitos a estruturas; seleciona a Visão
para a funcionalidade da aplicação. - Não vincula requisitos a estruturas, quem faz isso é o modelo.
d) Visão: exibe dados do Controlador graficamente; pede
atualizações ao Modelo; permite que a Visão selecione o Controlador.
- Controlador não tem dados. E é o controlador que seleciona a visão.
Segundo Pressman, como já dito, a visão faz requisição de atualização ao
modelo.
e) Controlador: define encapsulamento do Modelo; transforma
requisitos do usuário em atualizações da Visão; seleciona a Visão
para o
usuário. - Controlador não define encapsulamento do modelo, são camadas
distintas. Não é atualização e sim seleção da visão correspondente ao
usuário, se fosse atualização do modelo estaria bom. A última ok.
-
Sobre o Model enviando notificação de mudança para a View:
https://www.dropbox.com/s/cpjfx8le8wypg94/MVC-Sommerville.PNG?dl=0
-
Controlador: define encapsulamento do Modelo; transforma requisitos do usuário em atualizações da Visão; seleciona a Visão para o usuário.
-
O modelo pode notificar diretamente a visão sobre alterações de estado. Um ótimo exemplo desse conceito seria a utilização do Design pattern comportamental OBSERVER, nele definimos listenners na visão, que são ouvintes de modificações de estado. No observer temos o mapeamento de 1 para muitos (1:N), ou seja um estado de model vinculado a vários listenners definidos em várias visões.
-
Acredito que o erro da alternativa C seja:
"tem comportamento pautado pela aplicação;"
Na verdade: O CONTROLLER DEFINE O COMPORTAMENTO DA APLICAÇÃO.
http://www.macoratti.net/vbn_mvc.htm
-
imagem mostrando model comunicando direto com view. por regra:
View: renderização da interface gráfica
Controller: receber e tratar os eventos da View.
Model: lógica de negócios.
O JSF segue MVC, o que exige middleman entre model e view: controller, que no caso do JSF é Managed Bean (MB), o qual mapeia os componentes para o model, instanciar os objetos no server side e também reagindo aos eventos do view. O MB sempre é uma classe serializável com métodos getters e setters para permitir o acesso aos componentes visuais. a anotação named permite que o MB seja visualizado dentro dos arquivos XHTML, referenciando métodos públicos e atributos do MB.
https://stackoverflow.com/questions/29594105/mvc-is-it-model-to-view-or-controller-to-view