SlideShare uma empresa Scribd logo
1 de 36
Lato Sensu em
                                              Sistemas Orientados a Objetos




                                   Módulo 2
                           Arquitetura Model View Controller




Tuesday, August 11, 2009
Lato Sensu em Sistemas Orientados a Objetos
                           Desenvolvimento de Aplicaões Web Avançado - 2°/2009




Tuesday, August 11, 2009
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
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
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
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
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
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
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
                                                 ?
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Lato Sensu em Sistemas Orientados a Objetos
                               Desenvolvimento de Aplicaões Web Avançado - 2°/2009




                           MVC
                            problema




                           dados




Tuesday, August 11, 2009
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
Lato Sensu em Sistemas Orientados a Objetos
                             Desenvolvimento de Aplicaões Web Avançado - 2°/2009




                           MVC
                           problema




                           dados




Tuesday, August 11, 2009
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
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
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
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
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
Lato Sensu em Sistemas Orientados a Objetos
                           Desenvolvimento de Aplicaões Web Avançado - 2°/2009




Tuesday, August 11, 2009
Lato Sensu em
                                      Sistemas Orientados a Objetos




                  Q&A      MSc. Alexandre Gomes
                           alegomes@gmail.com
Tuesday, August 11, 2009

Mais conteúdo relacionado

Mais procurados

Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...
Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...
Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...
André Constantino da Silva
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento Web
Sérgio Souza Costa
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Sérgio Souza Costa
 

Mais procurados (20)

Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...
Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...
Desenvolvimento de Sistemas Interativos - Integração das Visões de Engenharia...
 
Evolução_dos_sistemas_operativos_open_source
Evolução_dos_sistemas_operativos_open_sourceEvolução_dos_sistemas_operativos_open_source
Evolução_dos_sistemas_operativos_open_source
 
Triggers no SQL Server
Triggers no SQL ServerTriggers no SQL Server
Triggers no SQL Server
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento Web
 
Dicas e Princípios Básicos do Linux
Dicas e Princípios Básicos do LinuxDicas e Princípios Básicos do Linux
Dicas e Princípios Básicos do Linux
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
 
Integridade De Dados
Integridade De DadosIntegridade De Dados
Integridade De Dados
 
Treinamento de SQL Básico
Treinamento de SQL BásicoTreinamento de SQL Básico
Treinamento de SQL Básico
 
Modelos de Processo de Software
Modelos de Processo de SoftwareModelos de Processo de Software
Modelos de Processo de Software
 
Licenças de software
Licenças de softwareLicenças de software
Licenças de software
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com Angular
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers Docker
 
Construção de interfaces gráficas com Tkinter
Construção de interfaces gráficas com TkinterConstrução de interfaces gráficas com Tkinter
Construção de interfaces gráficas com Tkinter
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
 
Analise de Requisitos Software
Analise de Requisitos SoftwareAnalise de Requisitos Software
Analise de Requisitos Software
 
Aula 3 - Sistemas operacionais - Linux
Aula 3 - Sistemas operacionais - LinuxAula 3 - Sistemas operacionais - Linux
Aula 3 - Sistemas operacionais - Linux
 
SOA - Uma Breve Introdução
SOA - Uma Breve IntroduçãoSOA - Uma Breve Introdução
SOA - Uma Breve Introdução
 

Destaque

Unified Case Management 360
Unified Case Management 360Unified Case Management 360
Unified Case Management 360
Kev Carter
 
Hplc (basic principles, operation and maintenance)
Hplc (basic principles, operation and maintenance)Hplc (basic principles, operation and maintenance)
Hplc (basic principles, operation and maintenance)
alim125135
 
SCOPE OF HIGHER EDUCATION AND RESEARCH IN URBAN FORESTRY, LANDSCAPE& URBAN B...
SCOPE	OF	HIGHER	EDUCATION	AND	 RESEARCH	IN	URBAN	FORESTRY, LANDSCAPE&	URBAN	B...SCOPE	OF	HIGHER	EDUCATION	AND	 RESEARCH	IN	URBAN	FORESTRY, LANDSCAPE&	URBAN	B...
SCOPE OF HIGHER EDUCATION AND RESEARCH IN URBAN FORESTRY, LANDSCAPE& URBAN B...
Anchal Garg
 

Destaque (17)

Presentación y actividades
Presentación y actividadesPresentación y actividades
Presentación y actividades
 
ROOM 1 - The journey to greater performance - MeantallyFit
ROOM 1 - The journey to greater performance - MeantallyFitROOM 1 - The journey to greater performance - MeantallyFit
ROOM 1 - The journey to greater performance - MeantallyFit
 
SEO
SEOSEO
SEO
 
Susan 3
Susan 3Susan 3
Susan 3
 
Unified Case Management 360
Unified Case Management 360Unified Case Management 360
Unified Case Management 360
 
Projeto interdisciplinar 01
Projeto interdisciplinar 01Projeto interdisciplinar 01
Projeto interdisciplinar 01
 
Enhancing Communication & Collaboration with G Suite in Healthcare
Enhancing Communication & Collaboration with G Suite in HealthcareEnhancing Communication & Collaboration with G Suite in Healthcare
Enhancing Communication & Collaboration with G Suite in Healthcare
 
Live Website Analysis | AAO 672
Live Website Analysis | AAO 672Live Website Analysis | AAO 672
Live Website Analysis | AAO 672
 
UniStream - Acesso remoto a partir de qalquer lugar e qualquer hora
UniStream - Acesso remoto a partir de qalquer lugar e qualquer horaUniStream - Acesso remoto a partir de qalquer lugar e qualquer hora
UniStream - Acesso remoto a partir de qalquer lugar e qualquer hora
 
Application brochure
Application brochureApplication brochure
Application brochure
 
Aula 1 introdução educação_corporativa
Aula 1 introdução educação_corporativaAula 1 introdução educação_corporativa
Aula 1 introdução educação_corporativa
 
Hplc (basic principles, operation and maintenance)
Hplc (basic principles, operation and maintenance)Hplc (basic principles, operation and maintenance)
Hplc (basic principles, operation and maintenance)
 
Outubro rosa – campanha de prevenção ao cancer de mama
Outubro rosa – campanha de prevenção ao cancer de mamaOutubro rosa – campanha de prevenção ao cancer de mama
Outubro rosa – campanha de prevenção ao cancer de mama
 
Overall Equipment Effectiveness
Overall Equipment EffectivenessOverall Equipment Effectiveness
Overall Equipment Effectiveness
 
Plano de comunicação
Plano de comunicaçãoPlano de comunicação
Plano de comunicação
 
SCOPE OF HIGHER EDUCATION AND RESEARCH IN URBAN FORESTRY, LANDSCAPE& URBAN B...
SCOPE	OF	HIGHER	EDUCATION	AND	 RESEARCH	IN	URBAN	FORESTRY, LANDSCAPE&	URBAN	B...SCOPE	OF	HIGHER	EDUCATION	AND	 RESEARCH	IN	URBAN	FORESTRY, LANDSCAPE&	URBAN	B...
SCOPE OF HIGHER EDUCATION AND RESEARCH IN URBAN FORESTRY, LANDSCAPE& URBAN B...
 
Comunicação Integrada - Aula 4
Comunicação Integrada - Aula 4Comunicação Integrada - Aula 4
Comunicação Integrada - Aula 4
 

Semelhante a MVC

Qualificação MACC- Entities
Qualificação MACC- EntitiesQualificação MACC- Entities
Qualificação MACC- Entities
Marcius Brandão
 
Aula1 - Modelagem de Sistemas Orientada a Objetos
Aula1 - Modelagem de Sistemas Orientada a ObjetosAula1 - Modelagem de Sistemas Orientada a Objetos
Aula1 - Modelagem de Sistemas Orientada a Objetos
Leandro Rezende
 

Semelhante a MVC (20)

JEE Design Patterns
JEE Design PatternsJEE Design Patterns
JEE Design Patterns
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
Java Web Components
Java Web ComponentsJava Web Components
Java Web Components
 
Qualificação MACC- Entities
Qualificação MACC- EntitiesQualificação MACC- Entities
Qualificação MACC- Entities
 
ARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDO
ARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDOARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDO
ARQUITETURAS PERFEITAS E O PORQUÊ SEU PROJETO NASCEU FALIDO
 
Aula01 introducao
Aula01 introducaoAula01 introducao
Aula01 introducao
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Objectory
ObjectoryObjectory
Objectory
 
Arquitetura de Software - Uma Visão Crítica
Arquitetura de Software - Uma Visão CríticaArquitetura de Software - Uma Visão Crítica
Arquitetura de Software - Uma Visão Crítica
 
Aula1 - Modelagem de Sistemas Orientada a Objetos
Aula1 - Modelagem de Sistemas Orientada a ObjetosAula1 - Modelagem de Sistemas Orientada a Objetos
Aula1 - Modelagem de Sistemas Orientada a Objetos
 
Cronograma - SE - Licenciatura em Computação - UNEMAT 2010
Cronograma - SE - Licenciatura em Computação - UNEMAT 2010 Cronograma - SE - Licenciatura em Computação - UNEMAT 2010
Cronograma - SE - Licenciatura em Computação - UNEMAT 2010
 
Solução web de scrum para o apoio a comunicação entre equipes remotas
Solução web de scrum para o apoio a  comunicação entre equipes remotasSolução web de scrum para o apoio a  comunicação entre equipes remotas
Solução web de scrum para o apoio a comunicação entre equipes remotas
 
Currículo Fernanda Paulo Ramos - Nov/2013
Currículo Fernanda Paulo Ramos - Nov/2013Currículo Fernanda Paulo Ramos - Nov/2013
Currículo Fernanda Paulo Ramos - Nov/2013
 
Criando Framework - Conceitos, Estratégias e Dicas
Criando Framework - Conceitos, Estratégias e DicasCriando Framework - Conceitos, Estratégias e Dicas
Criando Framework - Conceitos, Estratégias e Dicas
 
Introdução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NETIntrodução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NET
 
Engenharia de Software Aula 1 - Intro
Engenharia de Software Aula 1 - IntroEngenharia de Software Aula 1 - Intro
Engenharia de Software Aula 1 - Intro
 
29/09/2011 - 9h às 12h30 - oficina - arquitetura da informação em sistemas 2...
29/09/2011 -  9h às 12h30 - oficina - arquitetura da informação em sistemas 2...29/09/2011 -  9h às 12h30 - oficina - arquitetura da informação em sistemas 2...
29/09/2011 - 9h às 12h30 - oficina - arquitetura da informação em sistemas 2...
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
Otimizando os projetos de TI com User Experience
Otimizando os projetos de TI com User ExperienceOtimizando os projetos de TI com User Experience
Otimizando os projetos de TI com User Experience
 
Eng.ª do Software - 1. Introdução
Eng.ª do Software - 1. IntroduçãoEng.ª do Software - 1. Introdução
Eng.ª do Software - 1. Introdução
 

MVC

  • 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