1. Lato Sensu em
Sistemas Orientados a Objetos
Módulo 2
Arquitetura Model View Controller
Tuesday, August 11, 2009
2. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Tuesday, August 11, 2009
3. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Introdução aos Padrões
O que faz um bom músico ser bom ?
Tuesday, August 11, 2009
4. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Introdução aos Padrões
O que faz um bom capoeirista ser bom ?
Tuesday, August 11, 2009
5. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Introdução aos Padrões
O que faz um bom dançarino ser bom ?
Tuesday, August 11, 2009
6. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Introdução aos Padrões
O que faz um bom músico ser bom!
Tuesday, August 11, 2009
7. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Introdução aos Padrões
O que faz um bom capoeirista ser bom!
Tuesday, August 11, 2009
8. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Introdução aos Padrões
O que faz um bom dançarino ser bom!
Tuesday, August 11, 2009
9. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Introdução aos Padrões
O que faz um bom desenvolvedor ser bom ?
Tuesday, August 11, 2009
?
10. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Introdução aos Padrões
• O que faz um bom desenvolvedor ser bom ?
- Experiência
- Respostas para dúvidas frequentes
- Soluções para problemas recorrentes
- Conhecimento de padrões (patterns)
Tuesday, August 11, 2009
11. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Introdução aos Padrões
• Patterns
- Arquitetura e engenharia civil
- Mecânica
- Ergonomia de software
- Redes de computadores
- Programação
Arquitetura de software
Sistemas distribuídos
Banco de dados
Projeto de sistemas OO
Aplicações web
Tuesday, August 11, 2009
12. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Introdução aos Padrões
• O que são os patterns ?
- São maneiras aprovadas e recomendadas por
projetistas experientes de como resolver
determinados problemas de projeto.
- São soluções de projeto que melhoram a
qualidade de um software, se aplicadas num
contexto apropriado.
- Um padrão especifica como classes e objetos
devem se comunicar para resolver um problema
específico.
Tuesday, August 11, 2009
13. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Introdução aos Padrões
• O que são os patterns ?
- Gang of Four (GoF)
“Padrões de projeto são descrições de classes e objetos que são
customizáveis para solucionar um problema geral de design em um
contexto particular”
- C. Alexander
“Cada padrão descreve um problema que ocorre recorrentemente em
nosso ambiente, e assim descreve o cerne da solução para aquele
problema, de tal maneira que você pode usar esta solução uma centena
de vezes sem implementá-la da mesma maneira duas vezes.”
Tuesday, August 11, 2009
14. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Introdução aos Padrões
• Vantagens
- Exploram estruturas de projeto que favorecem:
Abstração
Flexibilidade
Modularidade
Elegância
- Agrega conhecimento de projeto de
profissionais experientes.
Tuesday, August 11, 2009
15. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Introdução aos Padrões
• Vantagens
- Cria um vocabulário comum que provê maior
expressividade na comunicação entre uma equipe
de desenvolvimento
- Aprende-se com o erro dos outro
- Melhores práticas da POO
- Melhor qualidade
- Reuso de componentes de software.
Tuesday, August 11, 2009
16. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Introdução aos Padrões
• Catálogo de patterns
- Agrupamento de padrões
- Documentação pré-formatada
Nome do padrão
Contexto em que deve ser aplicado
Problema que ele ataca
A solução que ele propõe
Conseqüências de sua utilização
Tuesday, August 11, 2009
17. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Introdução aos Padrões
• Exemplo de problema
- Como mostrar uma determinada informação de
diversas maneiras para diversos usuários?
Tuesday, August 11, 2009
18. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Introdução aos Padrões
• Documentação completa
Nome e classificação Colaborações
Objetivo Conseqüências
Sinônimos Implementação
Motivação Código de exemplo
Aplicabilidade Usos conhecidos
Estrutura Padrões relacionados
Participantes
Tuesday, August 11, 2009
19. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Introdução aos Padrões
• Como escolher um padrão ?
- Pesquise os problemas atacados por cada padrão
- Veja se seu problema é equivalente a algum deles
- Entenda como cada padrão resolve cada
problema
- Entenda como os padrões se inter-relacionam
- Analise as consequências de sua utilização
Tuesday, August 11, 2009
20. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Introdução aos Padrões
• Como usar um padrão ?
- Leia o padrão de projeto inteiro para ter uma visão geral
- Certifique-se de que entendeu bem a estrutura do padrão
- Veja no código de exemplo como implementar o padrão
- Escolha nomes para os participantes do padrão de acordo com
o contexto da aplicação
- Defina as classes
- Defina os nomes dos métodos de acordo com a nomenclatura
do contexto da aplicação
- Implemente os métodos
Tuesday, August 11, 2009
21. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Introdução aos Padrões
• Como não usar um padrão
- Se existe uma maneira trivial para resolver um
problema e um padrão de projeto, prefira a
simplicidade
- Só use um padrão de projeto quando
necessário: deve haver ganhos claros com o uso
do padrão
- Padrões de projeto indevidamente aplicados
aumentam a complexidade do software sem
necessidade
Tuesday, August 11, 2009
22. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Introdução aos Padrões
• O que nos interessa
- Padrões de arquitetura
Architectural Patterns
- Padrões de projeto
Design Patterns
- Padrões da linguagem
Low-level Patterns (Idioms)
Tuesday, August 11, 2009
23. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Padrões de Arquitetura
• Altíssimo nível
• Definem a estrutura macro da aplicação
• Todas as atividades de desenvolvimento
devem ser conduzidas sobre esta estrutura
• Resolve problemas como
- Divisão em módulos
- Comunicação entre módulos
- Expansão do sistema
Tuesday, August 11, 2009
24. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Padrões de Projeto
• Padrões de tamanho médio
• Menores que os padrões de arquitetura
• Maiores que os idiomas
• Não impactam na estrutura básica do
sistema, mas podem influenciar na
arquitetura interna de um subsistema
Tuesday, August 11, 2009
25. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Idiomas
• Padrões de mais fina granularidade
• Específicos de linguagem
• Estilo de programação
• Exemplo
- Para laços infinitos
Não use for(;;)
Não use while(1)
Use while(true) //Mesmo em C
Tuesday, August 11, 2009
26. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Padrões de Arquitetura
• MVC
- Contexto
Aplicações interativas com flexibilidade na interface do usuário
- Problema
Sistema de votação. Dados são inseridos em uma planilha e o resultado
deve ser apresentado em diversos formatos.
Tuesday, August 11, 2009
27. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
MVC
problema
dados
Tuesday, August 11, 2009
28. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
MVC
problema
• Deve ser possível acrescentar novas formas de
visualização dos dados
dados
Tuesday, August 11, 2009
29. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
MVC
problema
dados
Tuesday, August 11, 2009
30. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
MVC
solução
Divida o sistema em 3 partes
Tuesday, August 11, 2009
31. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
MVC
solução
• Divide a aplicação em 3 partes:
- Model
Dados e regras de negócio
- View
Apresentação de informações ao usuário
- Controller
Gerencia a entrada de dados
Tuesday, August 11, 2009
32. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
MVC
solução
• Model
- Manutenção dos dados
- Regras de negócio
- Independente da forma em que os dados são
apresentados
- Intependente da forma em que se dá a entrada
de instruções
Tuesday, August 11, 2009
33. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
MVC
solução
• View
- Apresenta informações ao usuário
- Obtém os dados do Model
- Cada View possui um Controller associado
Tuesday, August 11, 2009
34. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
MVC
solução
• Controller
- Recebe as ações do usuário, geralmente na
forma de eventos
- Traduz os eventos em solicitações de serviços
para o Model ou para a View
Tuesday, August 11, 2009
35. Lato Sensu em Sistemas Orientados a Objetos
Desenvolvimento de Aplicaões Web Avançado - 2°/2009
Tuesday, August 11, 2009
36. Lato Sensu em
Sistemas Orientados a Objetos
Q&A MSc. Alexandre Gomes
alegomes@gmail.com
Tuesday, August 11, 2009