- 
                                
	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