Padrões de Interação com o
Usuário
Granularidade dos Padrões
Padrões estão relacionados a 3 elementos:
Contexto
ocorre
Problema
resolve
Solução
Problemas e Soluções podem ser observados em
diferentes níveis de granularidade
-
-
Padrão de Projeto: Classes, Objetos e suas relações
• Relações: associações, herança, dependência, etc
Padrão Arquitetural: Partes do Sistema e suas relações
• Visão de alto nível
Idiom: considera o padrão na ling. de programação
• Implementações específicas
Análise e Projeto OO com UML e Padrões| 2
Recapitulando
Padrão Camada
Problema
-
Como organizar os elementos?
Camada de
Apresentação
Solução
-
Organizar pela suas
responsabilidades em comum.
Promovendo
• Encapsulamento
• Acoplamento
• Coesão
Camada de
Negócio
Camada de
Dados
Análise e Projeto OO com UML e Padrões| 3
Exemplos de Padrões
Arquiteturais
Padrões POSA (Pattern Oriented Software Architect)
Categoria: From Mud to Structure
-
padrões que ajudam a evitar um ‘mar' de componentes.
Ex.: Layers – Divisão em Camadas
Categoria: Distributed systems
-
Já Vimos
Suporte à estruturação de sistemas com componentes distribuídos
Ex.: Broker – Separa serviços remotos de forma transparente
• Frameworks (Implementações): Corba, COM, etc.
Categoria: Interactive systems
-
Facilidade de adaptação de interface do usuário
Ex.: MVC: Controla diferentes visões de modelos do sistema
Focaremos o restante desta aula na categoria Interactive Systems
Análise e Projeto OO com UML e Padrões| 4
Padrões de
Interação com o Usuário
Objetivo promover duas separações:
-
-
Separação Visão-Modelo
• Boa Prática de projeto de software!
“Separa as classes que descrevem o modelo e a lógica de
negócios das classes que realizam a interface com o usuário,
permitindo que ambas evoluam de forma independente.”
Separação Visão-Controle (Visão-Apresentador)
• Separa a responsabilidade, facilita testes e manutenção
• Mais difícil de ser plenamente implementada em algumas
tecnologias.
– Em algumas GUI, regras de controle são associadas à visão.
Apresentador
Visões
Dados
Análise e Projeto OO com UML e Padrões| 5
Padrões Camandas e MVC
Distinção:
-
Camadas preocupa-se principalmente com a divisão da estrutura
MVC preocupa-se com interação entre partes do sistema.
MVC foi criado, e continua largamente sendo utilizado,
para definir as interações da camada de apresentação.
VIEW
CONTROLLER
MODEL
Camada
Apresentação
Camada
Negócio
Análise e Projeto OO com UML e Padrões| 6
Padrão MVC
MVC: Model-View-Controller
-
Um dos padrões mais conhecidos para iteração com o usuário
Um dos padrões mais confundidos para interação com o usuário*
Divide a aplicação em três partes fundamentais
-
„ odel – Representa os dados da aplicação e as regras de negócio
M
View – Representa a interpretação visual do modelo pelo usuário
„
Controller – Responsável por mediar a interação homem-máquina
„
O padrão foi originalmente criado em 1978.
-
Desde então diversas variações foram criadas para acompanhar
novas demandas na iteração com o usuário (UI)
Análise e Projeto OO com UML e Padrões| 7
MVC Original
Mais utilizado atualmente
em aplicações TUI Desktop
Controller
View
Model
associação indireta
realiza
<<interface>
Observer
associação direta
Responsabilidades:
-
Controller: Receber dados de Usuário (ex.: teclado) e
possui lógica de apresentação.
View: mostrar projeções (saída) sobre os dados do modelo
Modelo: representação dos dados e regras de negócio.
Em geral para cada elemento visão existe um controlador
Análise e Projeto OO com UML e Padrões| 8
Interação [em Camadas]
output
View
4
input
notificação
Presentation
Model
1
Controller
3
2
Business
Model
Análise e Projeto OO com UML e Padrões| 9
C. Negócio
notificação
C. Apresentação
Descrição:
1. O usuário faz requisições por dados
ou ações sobre os dados do modelo
ao Controller.
2. O Controller recebe as requisições
e repassa para o objeto apropriado
do B. Model para atendê-la.
3. O B. Model faz as operações sobre
os dados e retorna algum tipo de
informação ao Controller,que por
sua vez devolve informações para
objetos na camada de
apresentação.
4. Atualizações no P. Model são
avisadas ao View.
Variação MVP
Outros padrões (como o MVP) foram criados para resolver as
insuficiências do MVC quando aplicado a tecnologias de
interface gráfica mais modernas.
Qual a diferença do MVP (Model-View-Presenter) ?
Em interfaces GUI mais modernas:
• View é responsável pela entrada
de usuário.
• Presenter apenas media a View e
o Model.
Análise e Projeto OO com UML e Padrões| 10
Dolphin MVP Original
Utilizado em diversas
aplicações GUI Desktop
Presenter
View
foco do
padrão
Model
associação indireta
associação direta
Responsabilidades:
-
Controller: Media View e Model
View: realiza toda a interação com o usuário, possui lógica
de apresentação.
Modelo: representação dos dados e regras de negócio.
Múltiplas visões podem estar associadas ao mesmo presenter
Análise e Projeto OO com UML e Padrões| 11
Interação [em Camadas]
1
View
notificação
2
4
Presentation
Model
Controller
3
Business
Model
Análise e Projeto OO com UML e Padrões| 12
C. Negócio
notificação
C. Apresentação
Descrição:
1. O usuário faz requisições por
dados ou ações sobre os dados do
modelo ao View.
2. O Presenter recebe as requisições
e repassa para o objeto
apropriado do B. Model para
atendê-la.
3. O B. Model faz as operações sobre
os dados e retorna algum tipo de
informação ao Presenter,que por
sua vez devolve informações para
objetos na camada de
apresentação.
4. Atualizações no P. Model são
avisadas ao View.
Discussão
MVC ou não MVC eis a questão?
Atualmente, são classificados como padrões MVC (ou variantes)
aqueles padrões que obedecem à seguinte condição:
-
Controller é responsável pela entrada de dados do usuário
Caso a View seja responsável pela entrada do usuário,
assumiremos estar utilizando uma variação MVP.
Análise e Projeto OO com UML e Padrões| 13
Outras variações
Segundo Martin Fowler tanto as formas originais do MVC e MVP,
encontra-se em desuso.
Segundo Fowler, duas variações do padrão podem ser
identificados mais comumente:
-
Passiva (chamada Passsive View)
View
-
Desacopladas
Model
Ativa (chamada Supervising Controller)
View
Sincronização
com Observer
Model
Análise e Projeto OO com UML e Padrões| 14
Variações MVP e MVC
Por convenção mostraremos versões ativas e
passivas para o Padrão MVP
-
Passive MVP
Supervising Presenter
De fato, segundo
Fowler, o supervising
controller segue um
estilo de Presenter.
Indicações de uso em aplicações GUI
-
Ativa: mais indicadas para aplicações “ricas”
Passiva: Mais indicadas para aplicações stateless
• necessitam de uma menor sincronização Model-View
Análise e Projeto OO com UML e Padrões| 15
Passive MVP
Utilizado em diversas
aplicações Web
Presenter
View
foco do
padrão
Model
associação indireta
Model tem papel
periférico no padrão
associação direta
Responsabilidades:
-
Presenter: Media View e Model
View: realiza toda a interação com o usuário, possui lógica
de apresentação.
Modelo: representação dos dados e regras de negócio.
Análise e Projeto OO com UML e Padrões| 16
Interação
Descrição:
A View faz requisições por dados ou ações
sobre os dados do modelo.
2. O Presenter recebe as requisições e
repassa para o objeto apropriado do B.
Model para atendê-la.
3. O B. Model faz as operações sobre os
dados e retorna algum tipo de informação
ao Presenter,que por sua vez devolve
informações para a View.
4. Objetos de modelo na camada de
apresentação (P. Model) podem ser
eventualmente utilizados para auxiliar a
comunicação entre Presenter e View
1.
P. Model 4
1
Presenter
2
Business
Model
Análise e Projeto OO com UML e Padrões| 17
C. Negócio
3
C. Apresentação
View
Supervising Presenter
foco do
padrão
Utilizado em diversas
aplicações GUI Desktop
Presenter
View
Model
associação indireta
Model tem papel
periférico no padrão
associação direta
Responsabilidades:
-
-
Presenter: Media View e Model, possui lógica de
apresentação.
View: realiza toda a interação com o usuário
Modelo: representação dos dados e regras de negócio.
Similar ao Dolphin MVP, porém enfatiza que o Presenter deve
ter mais responsabilidades (lógica de apresentação).
Análise e Projeto OO com UML e Padrões| 18
Diag. Sequencia
Supervising Presenter
:Main
inicializa
inicializa
inicializa
Usuario
botão
:Model
:View
se cadastra
:Controller
se cadastra
Observer
notifica
atualiza'
modifica visão
Observer
processa
notifica
atualiza
Análise e Projeto OO com UML e Padrões| 19
Discussão
Modelo de Negócio e Apresentação
Em muitos casos é necessária a criação de entidades na
camada de apresentação para representar entidades de
negócio.
-
Ex.: Em aplicações Web, as linguagens de visão nem sempre
conseguem distinguir polimorfismo de tipo (herança)
De toda maneira, é importante não utilizar este mecanismo
(criação de duas representações) em excesso.
-
Sistemas podem ficar complicados e grandes (“BALOFO”).
BALOFO = Business Object x Logic Object
Análise e Projeto OO com UML e Padrões| 20
Discussão
1
notificação
A facilidade da
estruturação em
camadas permite que
adicionemos facilmente
alguns aspectos de
distribuição.
2
6
Presentation
Model
View
Controller
5
3
Business
Model
4
Business
Model
C. Apresentação C. Integração C. Negócio
Como faríamos para
acessar serviços de uma
Fachada remota?
Exercício
Dado:
-
A arquitetura do sistema modelada no exercício anterior
Modelar a camada de Apresentação para uma
aplicação GUI Desktop, utilizando MVP.
-
Observe que nem todas as interfaces precisam de um
supervising presenter/controller.
Análise e Projeto OO com UML e Padrões| 22
Arquitetura Cliente-Servidor
Cliente Web
(Browser)
Internet
Servidor Web
Cliente Web
A comunicação entre cliente e servidor na web é feita
utilizando o protocolo HTTP.
Análise e Projeto OO com UML e Padrões| 23
Arquitetura Cliente-Servidor
Via get de uma URL
Cliente Web
página
HTML
Parametros:
- Get (explicitamente)
- Post (implicitamente)
Servidor Web
Cliente Web
Análise e Projeto OO com UML e Padrões| 24
Aplicações Web
Características
-
Requisições simples (http)
Páginas dinâmicas, sem sincronização com o Model
-
Escolha óbvia: Versão passiva do MVC (Passive View)
Análise e Projeto OO com UML e Padrões| 25
Passive View [MVC]
Utilizado em diversas
aplicações Web
Controller
View
foco do
padrão
Model
associação indireta
Model tem papel
periférico no padrão
associação direta
Responsabilidades:
-
-
Controller: Media View e Model, possui lógica de
apresentação.
View: realiza toda a interação com o usuário
Modelo: representação dos dados e regras de negócio.
Análise e Projeto OO com UML e Padrões| 26
MVC 2
A aplicação do padrão MVC em Aplicações
Corporativas (web) requer algumas mudanças.
-
MVC 2 = Passive View+ Front Controller
Padrão FrontController [Martin Fowler]
-
Baseado no padrão Command (mesma estrutura)
Aplicação especifica à camada de Apresentação
Utiliza um controlador como um ponto inicial para todas
requisições. O controlador é responsável por delegar
processamentos, gerenciar visões, etc.
Análise e Projeto OO com UML e Padrões| 27
Diag. Seguencia
MVC 2
Cliente
Servidor
:Front
Controller
Browser
:Fabrica
Helpers
:Model
Command
serviço “1”
obter(“1”)
:Helper1
comando
v2 :View
HttpResponse
serviço “2”
gera
processa
html
obter(“1”)
:Helper2
comando
processa
Análise e Projeto OO com UML e Padrões| 28
Exercício
Dado:
-
A arquitetura do sistema modelada no exercício anterior
Modelar a camada de Apresentação para uma
aplicação Web, utilizando MVC 2.
Análise e Projeto OO com UML e Padrões| 29
Frameworks MVC
Existem Diversos frameworks que auxiliam o
desenvolvimento Web de acordo com o padrão MVC
Os frameworks Java mais conhecidos são:
-
JSF
Struts
Spring MVC
Todos provêem implementações para o Front Controller e
indicam formas para a representação dos demais papeis
(View e Model)
• Realização de interfaces do Framework
• Arquivos de Configuração
Análise e Projeto OO com UML e Padrões| 30
Struts e JSF
Struts e JSF possuem diversas similaridades
-
Views -> Páginas JSP
Controller -> Servlet (provido pelo framework)
Presentation Model -> Objetos Java, cujos atributos
representam campos de formulários
Principais diferenças existem apenas na definição do
Helper-Model
-
No Struts, eles são representados por duas classes
• Helper –> Action
• P. Model –> ActionForm
No JSF, eles são representados em um única classe
• Helper + P. Model -> Managed Bean
Análise e Projeto OO com UML e Padrões| 31
Download

Análise e Projeto OO com UML e Padrões