Você está na página 1de 16

08/09/2009

Padres de Interao com o Usurio

Granularidade dos Padres


Padres esto relacionados a 3 elementos:
ocorre resolve

Contexto

Problema

Soluo

Problemas e Solues podem ser observados em diferentes nveis de granularidade

Padro de Projeto: Classes, Objetos e suas relaes


Relaes: associaes, herana, dependncia, etc

Padro Arquitetural: Partes do Sistema e suas relaes


Viso de alto nvel

Idiom: considera o padro na ling. de programao


Implementaes especficas
Anlise e Projeto OO com UML e Padres| 2

08/09/2009

Recapitulando Padro Camada


Problema

Como organizar os elementos?


Camada de Apresentao Camada de Negcio

Soluo
Organizar pela suas responsabilidades em comum. Promovendo
Encapsulamento Acoplamento Coeso

Camada de Dados

Anlise e Projeto OO com UML e Padres| 3

Exemplos de Padres Arquiteturais


Padres POSA (Pattern Oriented Software Architect) Categoria: From Mud to Structure

padres que ajudam a evitar um mar' de componentes. Ex.: Layers Diviso em Camadas
J Vimos

Categoria: Distributed systems

Suporte estruturao de sistemas com componentes distribudos Ex.: Broker Separa servios remotos de forma transparente
Frameworks (Implementaes): Corba, COM, etc.

Categoria: Interactive systems


Facilidade de adaptao de interface do usurio Ex.: MVC: Controla diferentes vises de modelos do sistema

Focaremos o restante desta aula na categoria Interactive Systems


Anlise e Projeto OO com UML e Padres| 4

08/09/2009

Padres de Interao com o Usurio


Objetivo promover duas separaes:

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.

Separao Viso-Controle (Viso-Apresentador)


Separa a responsabilidade, facilita testes e manuteno Mais difcil de ser plenamente implementada em algumas tecnologias.
Em algumas GUI, regras de controle so associadas viso.

Apresentador Vises Dados


Anlise e Projeto OO com UML e Padres| 5

Padres Camandas e MVC


Distino:

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

Camada Apresentao Camada Negcio

Anlise e Projeto OO com UML e Padres| 6

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*

Divide a aplicao em trs partes fundamentais


Model Representa os dados da aplicao e as regras de negcio View Representa a interpretao visual do modelo pelo usurio Controller Responsvel por mediar a interao homem-mquina

O padro foi originalmente criado em 1978.


Desde ento diversas variaes foram criadas para acompanhar novas demandas na iterao com o usurio (UI)

Anlise e Projeto OO com UML e Padres| 7

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

Em geral para cada elemento viso existe um controlador

08/09/2009

Interao [em Camadas]


Descrio: 1. O usurio faz requisies por dados ou aes sobre os dados do modelo ao Controller. 2. O Controller recebe as requisies e repassa para o objeto apropriado do B. Model para atend-la. 3. O B. Model faz as operaes sobre os dados e retorna algum tipo de informao ao Controller,que por sua vez devolve informaes para objetos na camada de apresentao. 4. Atualizaes no P. Model so avisadas ao View.
output

C. Apresentao

View 4
notificao

input

1 Controller

Presentation Model 3

notificao

C. Negcio

2 Business Model

Anlise e Projeto OO com UML e Padres| 9

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.

Anlise e Projeto OO com UML e Padres| 10

08/09/2009

Dolphin MVP Original


Presenter
Utilizado em diversas aplicaes GUI Desktop

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

Interao [em Camadas]


Descrio: 1. O usurio faz requisies por dados ou aes sobre os dados do modelo ao View. 2. O Presenter recebe as requisies e repassa para o objeto apropriado do B. Model para atend-la. 3. O B. Model faz as operaes sobre os dados e retorna algum tipo de informao ao Presenter,que por sua vez devolve informaes para objetos na camada de apresentao. 4. Atualizaes no P. Model so avisadas ao View.

1 View
notificao

C. Apresentao

4 Presentation Model 3
notificao

2 Controller

C. Negcio

Business Model

Anlise e Projeto OO com UML e Padres| 12

08/09/2009

Discusso MVC ou no MVC eis a questo?


Atualmente, so classificados como padres MVC (ou variantes) aqueles padres que obedecem seguinte condio:

Controller responsvel pela entrada de dados do usurio

Caso a View seja responsvel pela entrada do usurio, assumiremos estar utilizando uma variao MVP.

Anlise e Projeto OO com UML e Padres| 13

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:

Passiva (chamada Passsive View) View


Desacopladas

Model

Ativa (chamada Supervising Controller) View


Sincronizao com Observer

Model

Anlise e Projeto OO com UML e Padres| 14

08/09/2009

Variaes MVP e MVC


Por conveno mostraremos verses ativas e passivas para o Padro MVP

Passive MVP Supervising Presenter

De fato, segundo Fowler, o supervising controller segue um estilo de Presenter.

Indicaes de uso em aplicaes GUI


Ativa: mais indicadas para aplicaes ricas Passiva: Mais indicadas para aplicaes stateless
necessitam de uma menor sincronizao Model-View

Anlise e Projeto OO com UML e Padres| 15

Passive MVP
Presenter
Utilizado em diversas aplicaes Web

foco do padro

View
associao indireta

Model
associao direta

Model tem papel perifrico no padro

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.

Anlise e Projeto OO com UML e Padres| 16

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

1 Presenter 3 2 Business Model

C. Negcio

Anlise e Projeto OO com UML e Padres| 17

Supervising Presenter
foco do padro

Presenter

Utilizado em diversas aplicaes GUI Desktop

View
associao indireta

Model
associao direta

Model tem papel perifrico no padro

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

Diag. Sequencia Supervising Presenter


:Main
inicializa inicializa inicializa

:Model :View
se cadastra

:Controller
se cadastra Observer boto notifica atualiza' modifica viso processa notifica atualiza Observer

Usuario

Anlise e Projeto OO com UML e Padres| 19

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

Anlise e Projeto OO com UML e Padres| 20

10

08/09/2009

Discusso
Como faramos para acessar servios de uma Fachada remota?
notificao

1 View 6 Presentation Model 5 2 Controller 3 Business Model 4 Business Model

C. Apresentao C. Integrao C. Negcio

A facilidade da estruturao em camadas permite que adicionemos facilmente alguns aspectos de distribuio.

Exerccio
Dado:

A arquitetura do sistema modelada no exerccio anterior

Modelar a camada de Apresentao para uma aplicao GUI Desktop, utilizando MVP.

Observe que nem todas as interfaces precisam de um supervising presenter/controller.

Anlise e Projeto OO com UML e Padres| 22

11

08/09/2009

Arquitetura Cliente-Servidor

Cliente Web (Browser) Internet Servidor Web

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

Requisies simples (http) Pginas dinmicas, sem sincronizao com o Model

Escolha bvia: Verso passiva do MVC (Passive View)

Anlise e Projeto OO com UML e Padres| 25

Passive View [MVC]


Controller
Utilizado em diversas aplicaes Web

foco do padro

View
associao indireta

Model
associao direta

Model tem papel perifrico no padro

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.

Anlise e Projeto OO com UML e Padres| 26

13

08/09/2009

MVC 2
A aplicao do padro MVC em Aplicaes Corporativas (web) requer algumas mudanas.

MVC 2 = Passive View+ Front Controller

Padro FrontController [Martin Fowler]


Baseado no padro Command (mesma estrutura) Aplicao especifica camada de Apresentao Utiliza um controlador como um ponto inicial para todas requisies. O controlador responsvel por delegar processamentos, gerenciar vises, etc.

Anlise e Projeto OO com UML e Padres| 27

Diag. Seguencia MVC 2


Cliente Servidor

Browser
servio 1

:Front Controller

:Fabrica Helpers
Command

:Model

obter(1) comando

:Helper1

v2 :View
HttpResponse

gera html obter(1)

processa

servio 2

:Helper2
comando processa

Anlise e Projeto OO com UML e Padres| 28

14

08/09/2009

Exerccio
Dado:

A arquitetura do sistema modelada no exerccio anterior

Modelar a camada de Apresentao para uma aplicao Web, utilizando MVC 2.

Anlise e Projeto OO com UML e Padres| 29

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

Anlise e Projeto OO com UML e Padres| 30

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

Principais diferenas existem apenas na definio do Helper-Model

No Struts, eles so representados por duas classes


Helper > Action P. Model > ActionForm

No JSF, eles so representados em um nica classe


Helper + P. Model -> Managed Bean
Anlise e Projeto OO com UML e Padres| 31

16

Você também pode gostar