A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

CURSO DE ESPECIALIZAÇÃO

Apresentações semelhantes


Apresentação em tema: "CURSO DE ESPECIALIZAÇÃO"— Transcrição da apresentação:

1 CURSO DE ESPECIALIZAÇÃO
EM TECNOLOGIA JAVA DESIGN PATTERNS PARTE 3: PADRÃO MVC Prof. Cesar Augusto Tacla UTFPR/Campus Curitiba

2 PLANO 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

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 PADRÃO MVC/ORIGENS “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.” Extraídos (texto e figura) do site do criador Trygve M. H. Reenskaug do padrão MVC

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. (Glenn e Pope , 1998) Glenn E. Krasner and Stephen T. Pope. A cookbook for using the model-view controller user interface paradigm in Smalltalk-80. Journal of Object Oriented Programming, 1(3):26-49, August/September 1998.

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) VISÃO CONTROLE MODELO

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 Mais detalhadamente 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.

12 PARTICIPANTES DO MVC Mais detalhadamente 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.

13 PARTICIPANTES DO MVC Mais detalhadamente 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…

14 MVC: COLABORAÇÕES Notificações

15 MVC: IMPLEMENTAÇÃO Controle é um observer de eventos da visão
java.util.Observable java.util.Observer Métodos que provocam mudanças no estado do modelo mutators() setChanged() update() notifyObservers() java.util.Observer java.util.Observable Cada objeto da visão implementa a interface Observer e seu método update(). Devem se registrar junto ao Observable Objetos do modelo podem estender Observable que possui a infraestrutura para registro e notificação.

16 JAVA.UTIL.OBSERVABLE API DOC: This class represents an observable object, or "data" in the model-view paradigm. It can be subclassed to represent an object that the application wants to have observed. Alguns métodos de Observable void addObserver(Observer o) void notifyObservers(Object arg) protected void setChanged()

17 JAVA.UTIL.OBSERVER API DOC: 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 Baixar o código JPlebiscito disponível em:
EXERCÍCIO 1 PLEBISCITO Baixar o código JPlebiscito disponível em: Esboçar o diagrama de classes 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

20 COLABORAÇÕES NO JPlebiscito
votar(int op) PlebiscitoGUI setChanged() Controle é um listener de eventos da visão’ update() notifyObservers() java.util.Observer java.util.Observable PercentuaisGUI update()

21 CONVERSOR CELSIUS > FAHRENHEIT
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

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.


Carregar ppt "CURSO DE ESPECIALIZAÇÃO"

Apresentações semelhantes


Anúncios Google