Sie sind auf Seite 1von 47

Abordagem Terico-Prtica

Prof. Giuliano Prado M. Giglio, M.Sc


Desenvolvimento de Aplicaes Distribudas - WEB

Agenda
Padro MVC

Objetivo Caractersticas Problemas e se aplicar o MVC Sistema Exemplo Aplicao MVC para Web Problemas que o MVC pode causar

Sistema
Um sistema uma parte da realidade, ou seja, um

conjunto de elementos interagindo entre si para realizar determinadas tarefas no mundo real

Exemplos: Sistema de venda Sistema de controle bancrio Sistema de automao industrial Sistemas de administrao de pessoal

SISTEMA EXEMPLO
Sistema de venda simples Clientes compram mercadorias em uma loja; A mercadoria vendida pelos funcionrios da loja; Os funcionrios da loja ganham comisso sobre suas vendas; O gerente da loja compra mercadorias de seus fornecedores; O gerente da loja controla o estoque das mercadorias;

Etapas do desenvolvimento OO
Elicitao das operaes desejadas

pelos usurios
Projeto da arquitetura do sistema Implementao das classes

componentes da arquitetura
Teste do sistema

Etapas do desenvolvimento OO
Observamos trs categorias de

classes
Classes de domnio Classes de interface Classes de controle

CLASSES DE DOMNIO
Classes que fazem parte do universo do

problema Representam conceitos do mundo real Aspectos da soluo computacional so desconsiderados Exemplos:
Cliente Mercadoria Funcionrio Fornecedor

Venda

CLASSES DE INTERFACE
Todos os sistemas de software possuem limites

Informaes transitam pelos limites do sistema Informaes so inseridas ou consultadas por agentes externos

CLASSES DE INTERFACE
Classes de interface esto no limite entre o sistema e

os agentes externos que enviam e/ou recebem informaes


Elas realizam a comunicao entre os agentes e o

sistema

CLASSES DE INTERFACE
Os agentes externos podem ser: Usurios (pessoas ou grupos de pessoas) Perifricos ligados ao sistema Outros sistemas ligados ao sistema As classes de interface no so

responsveis apenas pela interface com o usurio, mas por qualquer conexo do sistema com o mundo exterior !!!

CLASSES DE INTERFACE
Exemplos:

Classe que representa a janela de vendas Classe que representa a janela de cadastro de clientes Classe que representa o relatrio de nota fiscal de venda

CLASSES DE INTERFACE
Observao:

Como o sistema no possui interface com outros sistemas ou perifricos, existem apenas interfaces com o usurio Considere a interface do sistema de vendas com um sistema de folha de pagamento, em relao s comisses!

CLASSES DE CONTROLE
As classes de controle administram a interao

entre as classes de interface e as classes de domnio Elas conhecem os passos que devem ser realizados para o cumprimento de uma tarefa no sistema Classes de controle so utilizadas no tratamento de eventos na interface grfica de sistemas Java Exemplos: Gerenciador de vendas Gerenciador de armazenamento

Desenvolvimento de Sistemas OO
Determine as operaes realizadas no

sistema
Identifique os usurios que participam destas operaes; Identifique as classes necessrias para realizar as operaes;
Que classes de domnio so necessrias? Como ser a interface com o mundo exterior?

Identifique as classes de controle necessrias para a operao;


Que operaes envolvem um conjunto de classes? Que operaes so algoritmicamente complexas? Que operaes complementares so necessrias?

Padro MVC
Modelo Model View - Controller Modelo clssico de desenvolvimento OO

de aplicaes
Classe de Interface Classe de Controle

Classe de Domnio

Objetivo
Separar dados ou lgica de negcios

(Model) da interface do usurio (View) e do fluxo da aplicao (Control) A idia permitir que uma mesma lgica de negcios possa ser acessada e visualizada atravs de vrias interfaces. Na arquitetura MVC, a lgica de negcios (chamaremos de Modelo) no sabe de quantas nem quais interfaces com o usurio esto exibindo seu estado.

Objetivo
Com as diversas possibilidades de interfaces

que conhecemos hoje, a MVC uma ferramenta indispensvel para desenvolvermos sistemas

Caractersticas de MVC
Separao entre dados (Model),

apresentao (View) e Controlador (Controller) que gerencia as relaes entre o modelo e a apresentao Separa a lgica da apresentao Maior reusabilidade Responsabilidades mais definidas Reduz o esforo na camada de apresentao

Caractersticas de MVC
Metodologia ou design pattern que

relaciona a interface do usurio e os seus dados Um dos primeiros patterns reconhecidos Utilizado inicialmente em Smalltalk-80 Utilizado pelo GoF como exemplo de patterns

MVC Principais Caractersticas


A classe de controle conhece as classes

de interface e domnio
A classe de interface conhece as classe

de controle e domnio

MVC Principais Vantagens


A classe de domnio independente da interface do sistema A interface pode ser alterada sem afetar a classe de domnio A classe de domnio pode ser reutilizada em outras aplicaes A seqncia de operaes encapsulada na classe de controle As dependncias entre as classes do sistema so reduzidas

MVC
O conhecimento entre duas classes

representado atravs de associaes ou dependncias


As associaes so implementadas atravs de objetos atributos Se a classe A conhece a classe B, a primeira ter um atributo da classe B Atravs de seu atributo, a classe A pode chamar mtodos para manipular a classe B

Variantes do modelo MVC


Em uma primeira variante, a classe

de interface no conhece a classe de domnio. Neste caso, a classe de controle responsvel por todo o trnsito de informaes entre as duas classes. Em uma segunda variante (Document-View), as operaes da classe de controle so embutidas na classe de interface.

Modelo MVC - ESTRUTURA

Problema a se aplicar o MVC


Geralmente

quando desenvolvida uma aplicao para suportar apenas um tipo de cliente, se torna favorvel o entrelace dos dados com a interface especfica para a apresentao e controle dos dados. Esse procedimento inadequado quando aplicado para sistemas que precisam suportar diversos tipos de usurios que exigem interfaces diversas. Se o cdigo estiver dependente da interface e houver necessidade de mudar qualquer um dos dois ocorrer uma duplicao dos esforos de implementao, bem como testes e manuteno.

Problema a se aplicar o MVC


Interfaces com o usurio so

sensveis a mudanas:

O usurio est sempre querendo mudar funcionalidades e a interface das aplicaes. Se o sistema no suporta estas mudanas, temos um grande problema!

A aplicao pode ter que ser

implementada em outra plataforma.

Problema a se aplicar o MVC


A mesma aplicao possui diferentes

requisitos dependendo do usurio:

um digitador prefere uma interface onde tudo pode ser feito atravs do teclado e visualizado como texto. um gerente prefere uma interface atravs do mouse e de menus com visualizao grfica

Neste contexto, se o cdigo para a

interface grfica muito acoplado ao cdigo da aplicao, o desenvolvimento pode se tornar muito caro e difcil.

Quando usar o MVC?


O MVC deve ser aplicado:

Quando os mesmos dados precisam ser acessados por diferentes interfaces ou atualizados por diferentes interaes, pois separa os dados da apresentao e a apresentao da lgica do controle que usa essas funcionalidades. Essa separao permite mltiplas visualizaes compartilharem do mesmo modelo de dados.

Aplicao MVC para a Web

Desenvolvimento de aplicaes Web - Servlets, JavaBeans, Jsp -

MVC Integrando Servlets e JSP


A arquitetura Model-View-Controller separa a gerao do contedo de sua apresentao. Com isso, independente de como ser

apresentada esta informao, o que pode ser feito de diversas maneiras e mudar ao longo do tempo, o processamento (que engloba a lgica do negcio), ser feito. Assim, se precisarmos mudar apresentao, o processamento ser ou mesmo e viceversa.

MVC Integrando Servlets e JSP


No caso do uso de Servlets e JSP mesclados,

temos sempre a figura de um servlet controlador que despacha as solicitaes HTTP para as pginas de apresentao jsp. Alm disso, devemos ter classes auxiliares para: Realizar conexes com o banco de dados e atender solicitaes de acesso ao mesmo. Criar classes de domnio que refletem os principais objetos a serem tratados no domnio

MVC Projeto de uma arquitetura para aplicaes Web


Servidor de Aplicao (JSP Container)
Navegador Web
Requisio

Servlet (controlador)

Cria uma instncia

JavaBean (modelo) JSP (Apresentao)

Respostas

MiddleWare
JDBC

SGBD

Fluxo
WebServer

Request
Fo rw ar d

Request

Re sp on se

Modelo

Viso

Model, View e Controller

Model, View e Controller


Servlet Controller

Model EJB, JDO, JDBC

Viso

MVC Projeto de uma arquitetura para aplicaes Web


Servlets - Atuam como controladores,

recebendo as requisies dos usurios e acionando os beans e pginas JSP. JavaBeans - Atuam como modelo da soluo, independente da requisio e da forma de apresentao. Comunicam-se com a camada intermediria que encapsula a lgica do problema.

MVC Projeto de uma arquitetura para aplicaes Web


JSP - Atuam na camada de apresentao

utilizando os javabeans para obteno dos dados a serem exibidos, isolando-se assim de como os dados so obtidos. Middleware - Incorporam a lgica de acesso aos dados. Permitem isolar os outros mdulos de problemas como estratgias de acesso aos dados e desempenho.

Vantagens da arquitetura
1) Facilidade de manuteno: a

distribuio lgica das funes entre os mdulos do sistema isola o impacto das modificaes. 2) Escalabilidade: Modificaes necessria para acompanhar o aumento da demanda de servios (database pooling, clustering, etc) ficam concentradas na camada intermediria. 3) Independente de fabricante: usa apenas padres abertos.

Exemplo Proposto
Queremos implementar um sistema de

votao, fazer uma enquete. A enquete deve permitir o voto dos usurios. Os votos so contabilizados e exibidos de duas formas:
Tela com votos absolutos, que mostra os totais de votos para cada opo; Tela com percentual de votos.

Soluo sem MVC


Uma soluo simples seria a criao de

uma tela de votao (classe TelaVotacao) que armazena o estado da enquete e incrementa os votos medida que os botes so clicados. Ao incrementar uma opo, as telas que exibem os resultados seriam atualizadas

Soluo funciona, mas...


E se, a partir de agora, o cliente comea a

acessar a Internet e tem a idia de colocar a enquete para os usurios da rede? E pior, o cliente comprou um celular com suporte a WAP e sacou que seria interessante ter a enquete tambm em WAP! Os problemas aumentaro medida que nosso cliente comprar um celular com suporte a J2ME, um PALM, um relgio que acessa a Internet... Temos um problema.

Qual o problema da soluo anterior?


A classe TelaVotacao representa a

interface de votao e ao mesmo tempo armazena o estado da enquete! No conseguimos extrair o "business logic" da enquete pois ele est misturado com a interface! Premissa bsica para uma boa soluo: "A LGICA DE NEGCIO NO DEVE CONHECER NADA SOBRE AS TELAS QUE EXIBEM SEU ESTADO!"

Soluo com MVC

Modelo (MODEL): Lgica de negcio; Viso (VIEW): O usurio v o estado do modelo e pode manipular a interface, para ativar a lgica de negcio; Controlador (CONTROLLER): Transforma eventos gerados pela interface em aes de negcio, alterando o modelo.

Consideraes Finais
MVC 23 anos aps sua criao

ainda um pattern aplicvel


Problemas que o MVC pode causar:

Se tivermos muitas vises e o modelo for atualizado com muita freqncia, a performance do sistema pode ser abalada.

Consideraes Finais
Problemas que o MVC pode causar:

Se o padro no for implementado com cuidado, podemos ter casos como o envio de atualizaes para vises que esto minimizadas ou fora do campo de viso do usurio. Ineficincia: uma viso pode ter que fazer inmeras chamadas ao modelo, dependendo de sua interface.

Referncias Bibliogrficas
Gamma, E.; Helm, R.; Johnson, R.; Vlissides, J.

Design Patterns - Elements of Reusable ObjectOriented Software. Reading-MA, AddisonWesley, 1995.


D. Alur, J. Crupi, D. Malks, Core J2EE Patterns

As melhores prticas e estratgias de design, Editora Campus, 2002.


Kerth, Norman L.; Cunningham, Ward. Using

Patterns to Improve Our Architectural Vision, IEEE Software, pp. 53-59, janeiro, 1997.

Referncias Bibliogrficas
http://www.burridge.net/jsp/jspinfo.html Web

Development with JSP: JSP, Java Servlet, and Java Bean Information
http://java.sun.com/ Pgina da Sun com

informaes, tutoriais e produtos Java.


http://www.enode.com/x/markup/tutorial/mvc.html

Tutorial MVC da empresa Markup Language contendo exemplificaes.

Das könnte Ihnen auch gefallen