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
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?
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
de interface e domnio
A classe de interface conhece as classe
de controle e domnio
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
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
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.
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.
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!
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
interface grfica muito acoplado ao cdigo da aplicao, o desenvolvimento pode se tornar muito caro e difcil.
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.
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.
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
Servlet (controlador)
Respostas
MiddleWare
JDBC
SGBD
Fluxo
WebServer
Request
Fo rw ar d
Request
Re sp on se
Modelo
Viso
Viso
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.
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.
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
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.
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!"
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
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.
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