• Nenhum resultado encontrado

VII Desenvolvimento e Toolkits. VII.2-Model View Controller

N/A
N/A
Protected

Academic year: 2021

Share "VII Desenvolvimento e Toolkits. VII.2-Model View Controller"

Copied!
19
0
0

Texto

(1)

VII – Desenvolvimento e Toolkits

VII.2-Model View Controller

Developing User Interfaces, Cap. 5,

Dan Olsen

2 VII.2-Model View Controller

(2)

3 VII.2-Model View Controller

Melhor e Pior?

(3)

5 VII.2-Model View Controller

Resumo da Aula Anterior

• Modelo de Acontecimentos

– Acontecimentos de entrada tais como...

• teclado, localizador(rato), janela, etc.

• Sistemas de Gestão de Janelas

• Malha principal de acontecimentos serve para

– Encaminhar (despachar) acontecimentos

• Árvores de interacção servem para

– Descobrir quem recebe que acontecimentos

• Encaminhar acontecimentos

– Duas abordagens principais

• + Abaixo e + à frente / top-down

• Comunicação entre Widgets

– Directamente ou através do pai

6 VII.2-Model View Controller

Sumário

• Definição de MVC

• Porque precisamos de modelos?

• Alterando o ecrã

• Fluxo de acontecimentos

(4)

7 VII.2-Model View Controller

Introdução

• Separação entre semântica da aplicação e

apresentação

(na fase de codificacao)

• Vantagens

– Portabilidade – mesma aplicação em diferentes sistemas

– Reutilização – componentes reutilizados reduz custos

– Múltiplas Interfaces – várias formas de aceder à mesma funcionalidade

– Configuração – pelo designer e/ou pelo utilizador

Modelo

Vista

Controlador

Model-View-Controller

• Arquitectura para aplicações interactivas

– desenvolvida pela equipa Smalltalk no Xerox PARC

• Estrutura a aplicação para facilitar

– escalabilidade – manutenção

(5)

9 VII.2-Model View Controller

Model-View-Controller

• Modelo

– Estado lógico interno da aplicação

• Vista

– O modo como os dados são

apresentados no ecrã

• Controlador

– Processa as entradas do utilizador

10 VII.2-Model View Controller

Aplicação Exemplo

Círculos Azuis: 4

(6)

11 VII.2-Model View Controller

Modelo

Vista Controlador

Modelo

• Informação manipulada pela aplicação

• Dados repr. objectos do “mundo real”

– “circuito” para um programa de CAD

• Portas lógicas & ligações entre estas

– Formas num programa de modelação geométrica

– Geometria e cor

Vista

• Concretiza representação visual do modelo

• Podem existir múltiplas vistas

– Por ex. vista de formas & vista numérica

Modelo

Vista

(7)

13 VII.2-Model View Controller

Múltiplas Vistas

Vis

ta

for

ma

s

Vista

Numér

ica

Círculos Azuis: 4

Quadrados Vermelhos: 2

14 VII.2-Model View Controller

Vistas

• Quando modelo alterado notifica

vistas

– Para que vista possa mudar mais tarde

(p.ex. acrescentar item)

Modelo

Vista

(8)

15 VII.2-Model View Controller

Controlador

• Recebe todos os acontecimentos de

entrada do utilizador

– Ex. Mouse-Down, Key-Press, etc.

• Decide sobre significado e acção a efectuar

Modelo Vista Controlador

Controlador

Círculos Azuis: 0

Quadrados Vermelhos: 0

(9)

17 VII.2-Model View Controller

Controlador

Círculos Azuis: 0

Quadrados Vermelhos: 0

18 VII.2-Model View Controller

Comunicação Controlador

• Comunica com vista

– Determina quais os objectos a manipular

• Por ex. que objecto seleccionado com rato

• Chama métodos do modelo para fazer

alterações

– Modelo efectua alteração + notifica vistas que devem actualizar-se Modelo Vista Controlador Círculos Azuis: 0 Quadrados Vermelhos: 0

(10)

19 VII.2-Model View Controller

Modelo

Vista

Controlador

Combinar Vista e Controlador

• Vista e controlador fortemente acopladas

– Comunicação intensa entre os dois

• Geralmente ocorrem aos pares

– i.e., cada vista precisa de um controlador dedicado

• Muitas arquitecturas combinam os dois numa só classe

Porquê MVC?

• Combinar M+V+C numa só classe ou usar

variáveis globais não

escala.

– Modelo pode ter mais que uma vista

• Todas diferentes & precisam de ser actualizadas quando modelo é alterado

• Separação simplifica a manutenção.

– Simples acrescentar uma nova vista

mais tarde

• Pode ser necessária mais info no modelo, mas vistas antigas continuam a funcionar

– Possível alterar uma vista mais tarde

(11)

21 VII.2-Model View Controller

Acrescentar novas vistas

Círculos Azuis: 4

Quadrados Vermelhos: 2

22 VII.2-Model View Controller

Alterar a Visualização

• Como redesenhar o ecrã quando

uma forma se desloca?

(Relação entre Vista e Sistema de

Gestão de Janelas)

(12)

23 VII.2-Model View Controller

Como deslocar quadrado?

Círculos Azuis: 4

Quadrados Vermelhos: 2

Ideias…?

Pintar com cor fundo e redesenhar

Círculos Azuis: 4

(13)

25 VII.2-Model View Controller

Mover quadrado vermelho

Círculos Azuis: 4

Quadrados Vermelhos: 2

26 VII.2-Model View Controller

Apagar c/cor de fundo e redesenhar

Círculos Azuis: 4

Quadrados Vermelhos: 2

Quadrado sobreposto ao círculo! Buraco aqui!

(14)

27 VII.2-Model View Controller

Alterar o ecrã

• Apagar & redesenhar não funciona

– Pintar com cor do fundo para apagar deixa buracos – Desenhar a forma na nova posição ignora prioridades – Como fazer correctamente?

• Mover no modelo & depois redesenhar vista

– Alterar posição das formas no modelo

– Modelo preserva formas com prioridade desejada – Instruir todas as vistas para se redesenharem por

ordem – Limitações?

• Lento para desenhos grandes / complexos -> tremor • solução?

Método Danos / Redesenho

• Vista informa SG janelas dos danos

– Áreas que necessitam de actualização – Vista não as redesenha por agora • SG janelas

– Agrupa actualizações

– Recorta-as contra a porção visível da janela • Na próxima vez que estiver a aguardar entrada

– SG janelas chama método de Redesenho da janela

(15)

29 VII.2-Model View Controller

Círculos Azuis: 4

Quadrados Vermelhos: 2

Aplicação do Método

• Dano prévio • Altera posição no Modelo • Dano novo • Redesenho 30 VII.2-Model View Controller

Fluxo de acontecimentos

• Comunicação entre componentes do MVC

• Processamento dos acontecimentos de

entrada

– Alteração do modelo

– Actualização das vistas

(16)

31 VII.2-Model View Controller

Fluxo de acontecimentos (cont.)

Assumam círculo azul seleccionado

(Controlador informa vista para realçar círculo)

Círculos Azuis: 0

Quadrados Vermelhos: 0

Fluxo de acontecimentos (cont.)

• Premir botão do rato na posição desejada

• SG janelas identifica janela associada ao acontecimento

• Controlador da área de desenho recebe evento de click do rato

Círculos Azuis: 0

Quadrados Vermelhos: 0



• Verifica modo & vê “círculo”

• Chama método CriaCirculo (no modelo) com

Modelo

Vista

(17)

33 VII.2-Model View Controller

Fluxo de acontecimentos (cont.)

Vistas notificam SG janelas dos danos

–Mas não fazem alterações por agora

CriaCirculo acrescenta

novo obj. à lista do modelo

• Modelo notifica lista de vistas da alteração

– Vista de área de desenho

– Vista de “contadores” Círculos Azuis: 0 Quadrados Vermelhos: 0 Modelo Vista Controlador 34 VII.2-Model View Controller

Fluxo de acontecimentos (cont.)

• Vistas devolvem controlo ao modelo • Modelo retorna ao controlador • Controlador retorna ao gestor de acontecimentos (event handler) Círculos Azuis : 0 Quadrados Vermelhos: 0

• Gestor de acontecimentos descobre pedidos de

reparação de danos pendentes & responde-lhes

• Se uma das vistas estiver oculta, pedidos de actualização desta serão ignorados

(18)

35 VII.2-Model View Controller

Fluxo de acontecimentos (cont.)

Gestor acontecimentos

chama método de

Redesenho da vista com

área danificada

Vista redesenha todos

os objectos do modelo

dentro da área

danificada

Círculos Azuis: 1

Quadrados Vermelhos: 0

Arrasto a velocidades interactivas

• Método “Óbvio”

– Danifica prévio, desloca alguns pixeis,

danifica novo, actualiza vista

• Problemas?

– Pode ser demasiado lento

– Qual a velocidade a que devemos

fazê-lo para parecer contínuo?

(19)

37 VII.2-Model View Controller

Arrasto a velocidades interactivas

• Soluções?

– Não desenhar objecto, usar contorno

(ou rectângulo a tracejado)

• usar XOR para apagar rapidamente

– P’ = XOR (D,P) P = XOR (D,P’)

– XOR+XOR = complemento (problemas com a cor -contraste)

• “save under” guardar zona da memória de visualização antes de mover

– Repõe a seguir para apagar objecto

– Menos problemático hoje devido às

placas gráficas RÁPIDAS

38 VII.2-Model View Controller

Resumo

• Três componentes do MVC – Modelo

• Informação subjacente manipulada pela aplicação

– Vista

• Representação visual da informação contida no modelo

– Controlador

• Processa interacção com utilizador e decide o que fazer

• Dois componentes frequentemente combinados – Vista & controlador – ocorrem sempre aos

pares

• MVC estrutura uma aplicação de modo a ser

– Fácil de escalar – podem existir múltiplas vistas para um modelo

Referências

Documentos relacionados

As sobras líquidas atingiram o montante de R$ 83,31 milhões (oitenta e três milhões, trezentos e dez mil reais), com redução de 16,41% em relação ao ano de 2016, tendo

Este programa foi concebido para se estabelecer como um meio optimizado de comunicação, permitindo a transmissão de material de trabalho e informação entre o Game Designer e a

Aquelas que necessitarem da utilização das salas passivas deverão observar o horário estabelecido no caput deste artigo... A equipe técnica deverá

3.2.3 Os candidatos que apresentarem todos os requisitos para a inscrição serão selecionados para a próxima etapa do processo seletivo, Dinâmica de Grupo ou

Para a realização desta pesquisa, foi feita uma revisão bibliográfica voltada para o tema espaço urbano, juntamente com estudos referentes ao crescimento urbano de

com competência nos municípios de Santa Cruz das Flores, das Lajes das Flores e de Vila do Corvo. f) Procuradoria da Instância Local de Santa Cruz da Graciosa,. com competência

Para o desenvolvimento do estudo, foi escolhido o software ARCHIBUS de Facility Management para realizar o objetivo de elaborar o plano de manutenção dos elementos

Enquanto o desenvolvimento da camada abaixo da zona nitretada depende do fornecimento de nitrogênio para difusão nas linhas de contorno γ' e ferro α, como demontrado no