curso de especializaÇÃo em tecnologia java design patterns parte 3: padrÃo mvc prof. cesar...

Post on 07-Apr-2016

235 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

CURSO DE ESPECIALIZAÇÃOEM TECNOLOGIA JAVA

DESIGN PATTERNSPARTE 3: PADRÃO MVC

Prof. Cesar Augusto Taclahttp://www.dainf.ct.utfpr.edu.br/~tacla

UTFPR/Campus Curitiba

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPR

2

◊ Para entender o modelo MVC, faremos um breve introdução ao padrão.

◊ Em seguida, implementaremos o modelo num programa simples de conversão de Celsius para Fahrenheit com duas visões.

◊ Finalmente, modificaremos o exercício acima para incluir uma nova visão. Para fixar, é interessante fazer diags. De classe e sequência.

◊ Tópicos relacionados: Observer será utilizado no exemplo, DAO no momento que persistimos os dados, Strategy para selecionar modo de visualizar dinamicamente

PLANO

3

PADRÃO MVC

◊ MODEL, VIEW, CONTROLLER◊ Objetivo primordial é organizar uma aplicação em três

camadas para aumentar a flexibilidade e o reuso.

4

“The essential purpose of MVC is to bridge the gap between the human user's mental model and the digital model that exists in the computer.

The ideal MVC solution supports the user illusion of seeing and manipulating the domain information directly. The structure is useful if the user needs to see the same model element simultaneously in different contexts and/or from different viewpoints.”

PADRÃO MVC/ORIGENS

Extraídos (texto e figura) do site do criador Trygve M. H. Reenskaug do padrão MVC http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html

5

NOÇÕES SOBRE MVC

MVC possui três tipos de objetos (Gamma et al., 1995) MODEL = objeto(s) do domínio da aplicação VIEW = objeto(s) da apresentação CONTROLLER = objetos que definem como a interface do usuário reage a

uma entrada do usuário

MVC desacopla estes objetos para aumentar flexibilidade e reuso.

6

NOÇÕES SOBRE MVC

IDÉIA CENTRAL DESACOPLAMENTO entre objetos das camadas de

visão e de modelo é obtido através de um protocolo de assinatura ou notificação (aí pode ser empregado o padrão OBSERVER)

MODELOVISÃO CONTROLE

7

NOÇÕES SOBRE MVC

VISÃO deve garantir que sua aparência reflita o estado do modelo.

Toda vez que o modelo muda, notifica as visões que dependem dele. Assim, cada visão pode atualizar-se.

Isto permite que múltiplas visões sejam conectadas ao modelo para prover diferentes apresentações.

Novas visões podem ser criadas para o modelo sem a necessidade de reescrevê-lo.

8

COLABORAÇÕES

A figura mostra um objeto modelo e três visões (controladores foram omitidos).O modelo possui alguns dados, mostrados diferentemente pelas três visões.Quando estes valores mudam, o modelo notifica as visões. As visões se comunicam com o modelo para refletirem estas mudanças.

9

CONSEQUÊNCIAS POSITIVAS

Manutenção mais simples: Código organizado Depuração isolada de camadas; Alterações numa camada não afetam outras.

Facilita o reuso

Simplifica a inclusão de um novo elemento de visão

Possibilita desenvolvimento das camadas em paralelo, se forem bem definidas.

10

CONSEQUÊNCIAS NEGATIVAS

Requer Análise mais aprofundada e mais tempo pessoal especializado

Desempenho do sistema pode cair Se houver muitas visões e Se o modelo for atualizado com muita freqüência,

Ineficiência uma visão pode ter que fazer inúmeras chamadas ao modelo,

dependendo de sua interface Se o padrão não for implementado com cuidado, podemos ter casos

como o envio de atualizações para visões que estão minimizadas ou fora do campo de visão de usuário

11

PARTICIPANTES DO MVC

Modelo do negócio (model): os objetos desta camada contêm os dados do negócio e as regras do negócio que ditam como acessar e modificar os dados de maneira consistente.

Encapsula os dados e os comportamentos do negócio e persiste os mesmos sem se preocupar em como serão mostrados.

Alguns autores preferem o termo modelo do domínio, pois nem todos os sistemas são comerciais . Por exemplo, simulador de oleodutos as regras não são de negócio, são leis da física.

Mais detalhadamente

12

PARTICIPANTES DO MVC

Visão (view): é responsável pela interação com o usuário e por apresentar as diversas visões dos dados do negócio. Não se preocupa em como os dados foram obtidos, apenas em apresentá-los.

Mais detalhadamente

13

PARTICIPANTES DO MVC

Controle (controller): comanda o fluxo de apresentação das informações fazendo a intermediação entre as camadas de visão e de modelo.

Escolha da apresentação em função da língua do usuário, permissões de acesso, dados a serem mostrados…

Mais detalhadamente

14

MVC: COLABORAÇÕES

Visão Controle Modelo do negócio

Eventos de interface, entrada de informações ações (a)

Notificações

15

MVC: IMPLEMENTAÇÃO

Visão Controle Modelo do negócio

Eventos de interface, entrada de informações ações (a)

java.util.Observable

notifyObservers()

mutators()

setChanged()

java.util.ObserverCada objeto da visão implementa a interfaceObserver e seu método update(). Devem se registrar junto aoObservable

Objetos do modelo podemestender Observable que possui a infraestrutura pararegistro e notificação.

Métodos que provocammudanças no estadodo modelo

Controle é um observer deeventos da visão

update()

java.util.Observable java.util.Observer

17

JAVA.UTIL.OBSERVER

API DOC: http://java.sun.com/j2se/1.5.0/docs/api/java/util/Observer.html

A class can implement the Observer interface when it wants to be informed of changes in observable objects.

Método de Observer void update(Observable o, Object arg) This method is called whenever the observed object is changed.

18

EXERCÍCIO 1

PLEBISCITO

Baixar o código JPlebiscito disponível em:http://www.dainf.ct.utfpr.edu.br/~tacla/JAVARepositorio/JMVCObserver/JPlebiscito/

1. Esboçar o diagrama de classes

2. Observar o desacoplamento entre a camada Model e as demais prestando atenção aos atributos de cada classe e às construtoras em Main.java

19

EXERCÍCIO 2

PLEBISCITO COM NOVA INTERFACE

1. Criar uma nova GUI que mostra os percentuais de cada opção do plebiscito. Observar que a criação de uma nova GUI não altera o model.

2. Montar um diagram de sequência para o cenário onde usuário clica no botão [sim]

PS. Uma variação do código pode ser feita implementando-se a parte de controle nas GUIs.

Solução em http://www.dainf.ct.utfpr.edu.br/~tacla/JAVARepositorio/JMVCObserver/JPlebiscitoComPercent/

20

COLABORAÇÕES NO JPlebiscito

Visão Controle Modelo do negócio

Eventos de interface, entrada de informações ações (a)

java.util.Observable

notifyObservers()

votar(int op)

setChanged()

java.util.Observer

Controle é um listener deeventos da visão’

update()

PlebiscitoGUI

PercentuaisGUI update()

21

EXERCÍCIO 3

CONVERSOR CELSIUS > FAHRENHEIT

Implemente, seguindo os padrões MVC e OBSERVER, um programa que permita ao usuário converter graus Celsius em Fahrenheits e que mostre o histórico dos 10 últimos valores convertidos.

Utilize o código do tutorial JPlebiscito como ponto de partida>> continua

22

EXERCÍCIO 3

Exercício (cont.)Há dois objetos na camada de visão: um para realizar a conversão e outro, para mostra o histórico.

Na camada do modelo, deve haver um objeto para cada conversão realizada e um para armazenar o histórico.

Solução em http://www.dainf.ct.utfpr.edu.br/~tacla/JAVARepositorio/JMVCObserver/JConversorCelsiusFahrGrafico-v3/

23

EXERCÍCIO 4

MODIFICAÇÃO DO CONVERSOR

Inclua uma nova visão para mostrar a média dos valores do histórico (visão sempre ativa).

Faça um diagrama de classes.

Faça um diagrama de sequência para um cenário que inicie na conversão de um valor em Celsius.

top related