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, ... – Padrão Arquitetural: Partes do Sistema e suas relações • Visão de alto nível – Idiom: considera o padrão na linguagem de programação • Implementações específicas Análise e Projeto OO com UML e Padrões| 2 Recapitulando Padrão Camadas • Problema – Como organizar os elementos? • Solução – Organizar pela suas responsabilidades em comum – Promovendo • Encapsulamento • Desacoplamento • Coesão Camada de Apresentaçã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 Architecture) • Categoria: From Mud to Structure – ajuda a evitar a proliferação exacerbada de componentes – Ex.: Layers – Divisão em Camadas • Categoria: Distributed systems – 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 da interface do usuário – Ex.: MVC: Controla diferentes visões da modelagem 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 • O 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 Camadas e MVC • Distinção: – Camadas preocupam-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 interação com o usuário • Divide a aplicação em três partes fundamentais – Model – Representa os dados da aplicação e as regras de negócio – View – Representa a interpretação visual do modelo pelo usuário – Controller - Responsável por mediar a interação usuário-aplicação • 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 Controller View Model associação indireta associação direta • Responsabilidades: – Controller: Recebe dados de Usuário (ex.: teclado) e possui lógica de apresentação – View: mostra 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 Variações • Duas variações do padrão podem ser identificados mais comumente: – Passiva (chamada Passive View) View Desacopladas Model – Ativa (chamada Supervising Controller) View Model Sincronização com Observer Análise e Projeto OO com UML e Padrões| 9 Interação [em Camadas] no MVC output View input 4 notificação Presentation Model 3 1 Controller 2 Business Model Análise e Projeto OO com UML e Padrões| 10 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 Model para atendê-la. 3. O 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 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 algumas tecnologias de interface gráfica • Qual a diferença do MVP (Model-View-Presenter)? • Em algumas GUI: – View é responsável pela entrada de dados do usuário – Presenter apenas media a View e o Model. Análise e Projeto OO com UML e Padrões| 11 Arquitetura Cliente-Servidor Cliente Web (Browser) Internet HTTP 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| 12 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| 13 Aplicações Web • Características – Requisições simples (http) – Páginas dinâmicas, sem sincronização com o Model – Que padrão usar? Análise e Projeto OO com UML e Padrões| 14 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| 15 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 Análise e Projeto OO com UML e Padrões| 16