Escolar Documentos
Profissional Documentos
Cultura Documentos
Contexto
Problema
Soluo
08/09/2009
Soluo
Organizar pela suas responsabilidades em comum. Promovendo
Encapsulamento Acoplamento Coeso
Camada de Dados
padres que ajudam a evitar um mar' de componentes. Ex.: Layers Diviso em Camadas
J Vimos
Suporte estruturao de sistemas com componentes distribudos Ex.: Broker Separa servios remotos de forma transparente
Frameworks (Implementaes): Corba, COM, etc.
08/09/2009
Separao Viso-Modelo
Boa Prtica de projeto de software! Separa as classes que descrevem o modelo e a lgica de negcios das classes que realizam a interface com o usurio, permitindo que ambas evoluam de forma independente.
Camadas preocupa-se principalmente com a diviso da estrutura MVC preocupa-se com interao entre partes do sistema.
MVC foi criado, e continua largamente sendo utilizado, para definir as interaes da camada de apresentao.
VIEW CONTROLLER MODEL
08/09/2009
Padro MVC
MVC: Model-View-Controller
Um dos padres mais conhecidos para iterao com o usurio Um dos padres mais confundidos para interao com o usurio*
MVC Original
Controller
Mais utilizado atualmente em aplicaes TUI Desktop
View
associao indireta
Model
associao direta
realiza
<<interface>
Observer
Responsabilidades:
Controller: Receber dados de Usurio (ex.: teclado) e possui lgica de apresentao. View: mostrar projees (sada) sobre os dados do modelo Modelo: representao dos dados e regras de negcio.
Anlise e Projeto OO com UML e Padres| 8
08/09/2009
C. Apresentao
View 4
notificao
input
1 Controller
Presentation Model 3
notificao
C. Negcio
2 Business Model
Variao MVP
Outros padres (como o MVP) foram criados para resolver as insuficincias do MVC quando aplicado a tecnologias de interface grfica mais modernas. Qual a diferena do MVP (Model-View-Presenter) ?
Em interfaces GUI mais modernas: View responsvel pela entrada de usurio. Presenter apenas media a View e o Model.
08/09/2009
foco do padro
View
associao indireta
Model
associao direta
Responsabilidades:
Controller: Media View e Model View: realiza toda a interao com o usurio, possui lgica de apresentao. Modelo: representao dos dados e regras de negcio. Mltiplas vises podem estar associadas ao mesmo presenter
Anlise e Projeto OO com UML e Padres| 11
1 View
notificao
C. Apresentao
4 Presentation Model 3
notificao
2 Controller
C. Negcio
Business Model
08/09/2009
Caso a View seja responsvel pela entrada do usurio, assumiremos estar utilizando uma variao MVP.
Outras variaes
Segundo Martin Fowler tanto as formas originais do MVC e MVP, encontra-se em desuso. Segundo Fowler, duas variaes do padro podem ser identificados mais comumente:
Model
Model
08/09/2009
Passive MVP
Presenter
Utilizado em diversas aplicaes Web
foco do padro
View
associao indireta
Model
associao direta
Responsabilidades:
Presenter: Media View e Model View: realiza toda a interao com o usurio, possui lgica de apresentao. Modelo: representao dos dados e regras de negcio.
08/09/2009
Interao
Descrio:
1. 2.
3.
4.
A View faz requisies por dados ou aes sobre os dados do modelo. O Presenter recebe as requisies e repassa para o objeto apropriado do B. Model para atend-la. O B. Model faz as operaes sobre os dados e retorna algum tipo de informao ao Presenter,que por sua vez devolve informaes para a View. Objetos de modelo na camada de apresentao (P. Model) podem ser eventualmente utilizados para auxiliar a comunicao entre Presenter e View
C. Apresentao
View
P . Model 4
C. Negcio
Supervising Presenter
foco do padro
Presenter
View
associao indireta
Model
associao direta
Responsabilidades:
Presenter: Media View e Model, possui lgica de apresentao. View: realiza toda a interao com o usurio Modelo: representao dos dados e regras de negcio.
Similar ao Dolphin MVP , porm enfatiza que o Presenter deve ter mais responsabilidades (lgica de apresentao).
Anlise e Projeto OO com UML e Padres| 18
08/09/2009
:Model :View
se cadastra
:Controller
se cadastra Observer boto notifica atualiza' modifica viso processa notifica atualiza Observer
Usuario
Discusso
Modelo de Negcio e Apresentao
Em muitos casos necessria a criao de entidades na camada de apresentao para representar entidades de negcio.
Ex.: Em aplicaes Web, as linguagens de viso nem sempre conseguem distinguir polimorfismo de tipo (herana)
De toda maneira, importante no utilizar este mecanismo (criao de duas representaes) em excesso.
Sistemas podem ficar complicados e grandes (BALOFO). BALOFO = Business Object x Logic Object
10
08/09/2009
Discusso
Como faramos para acessar servios de uma Fachada remota?
notificao
A facilidade da estruturao em camadas permite que adicionemos facilmente alguns aspectos de distribuio.
Exerccio
Dado:
Modelar a camada de Apresentao para uma aplicao GUI Desktop, utilizando MVP.
11
08/09/2009
Arquitetura Cliente-Servidor
Cliente Web A comunicao entre cliente e servidor na web feita utilizando o protocolo HTTP .
Anlise e Projeto OO com UML e Padres| 23
Arquitetura Cliente-Servidor
Via get de uma URL Parametros: - Get (explicitamente) - Post (implicitamente)
Cliente Web
pgina HTML
Servidor Web
Cliente Web
Anlise e Projeto OO com UML e Padres| 24
12
08/09/2009
Aplicaes Web
Caractersticas
foco do padro
View
associao indireta
Model
associao direta
Responsabilidades:
Controller: Media View e Model, possui lgica de apresentao. View: realiza toda a interao com o usurio Modelo: representao dos dados e regras de negcio.
13
08/09/2009
MVC 2
A aplicao do padro MVC em Aplicaes Corporativas (web) requer algumas mudanas.
Browser
servio 1
:Front Controller
:Fabrica Helpers
Command
:Model
obter(1) comando
:Helper1
v2 :View
HttpResponse
processa
servio 2
:Helper2
comando processa
14
08/09/2009
Exerccio
Dado:
Frameworks MVC
Existem Diversos frameworks que auxiliam o desenvolvimento Web de acordo com o padro MVC Os frameworks Java mais conhecidos so:
JSF Struts Spring MVC Todos provem implementaes para o Front Controller e indicam formas para a representao dos demais papeis (View e Model)
Realizao de interfaces do Framework Arquivos de Configurao
15
08/09/2009
Struts e JSF
Struts e JSF possuem diversas similaridades
Views -> Pginas JSP Controller -> Servlet (provido pelo framework) Presentation Model -> Objetos Java, cujos atributos representam campos de formulrios
16