SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
Programa¸˜o Orientada a Aspectos
        ca




                       Programa¸˜o Orientada a Aspectos
                               ca

                                    Wesley Klewerton

                                   PHP-Day SERPRO Curitiba


                                   01 de Junho de 2011
Programa¸˜o Orientada a Aspectos
        ca
  Agenda




Agenda

       1 Apresenta¸˜o
                  ca

       2 Introdu¸˜o
                ca

       3 Interesses Transversais

       4 Programa¸˜o Orientada a Aspectos (POA)
                 ca

       5 Mecanismos POA

       6 E na pr´tica?
                a

       7 Fim
Programa¸˜o Orientada a Aspectos
        ca
  Apresenta¸˜o
           ca




Wesley Klewerton

      Short Bio
      Graduado em Sistemas de Informa¸˜o, 2 especializa¸˜es,
                                        ca                co
                                             ˆ
      Mestrando em Inform´tica pela UFPR (Enfase em Engenharia de
                            a
      Software - Teste de Software), desenvolvedor PHP desde 2004,
      colaborador do time de tradu¸˜o da documenta¸˜o do CakePHP,
                                  ca                 ca
      participante da tradu¸˜o do Ubuntu, e por ai vai...
                           ca

      Contatos

              Email: wesleyklewerton@gmail.com
              Twitter: @wesleyklewerton
              Blog: www.wesleyk.com
Programa¸˜o Orientada a Aspectos
        ca
  Introdu¸˜o
         ca




Evolu¸˜o da Programa¸˜o
     ca             ca
Programa¸˜o Orientada a Aspectos
        ca
  Introdu¸˜o
         ca




Programa¸˜o Orientada a Objetos (POO)
        ca


      Vantagens

               Modelo de Neg´cios
                            o
               Abstra¸˜o
                     ca
               Encapsulamento
               Reuso de Componentes
               Padr˜es
                   o
               Facilidade de Manuten¸˜o
                                    ca
Programa¸˜o Orientada a Aspectos
        ca
  Interesses Transversais




Exemplo ilustrativo
Programa¸˜o Orientada a Aspectos
        ca
  Interesses Transversais




Exemplo ilustrativo - Interesses Transversais
Programa¸˜o Orientada a Aspectos
        ca
  Interesses Transversais




Exemplo ilustrativo - Interesses Transversais

      Sintomas

              N˜o s˜o tratados pelos mecanismos da POO
               a a
              Geram dois tipos de fenˆmenos:
                                     o
                       Espalhamento
                       Emaranhado


      Dificuldades

              Entendimento
              Reuso
              Manuten¸˜o
                     ca
              Evolu¸˜o
                   ca
Programa¸˜o Orientada a Aspectos
        ca
  Interesses Transversais




Exemplo Real - Apache Tomcat




      XML parsing in org.apache.tomcat
Programa¸˜o Orientada a Aspectos
        ca
  Interesses Transversais




Exemplo Real - Apache Tomcat




      Logging in org.apache.tomcat
Programa¸˜o Orientada a Aspectos
        ca
  Interesses Transversais




Interesses Transversais


      Onde s˜o encontrados?
            a

              Persistˆncia
                     e
              Auditoria (logs)
              Controle de exce¸˜es
                              co
              etc...

      Como podem ser otimizados?

                                     ???
Programa¸˜o Orientada a Aspectos
        ca
  Programa¸˜o Orientada a Aspectos (POA)
          ca




Programa¸˜o Orientada a Aspectos (POA)
        ca




              Procura modularizar os interesses transversais em unidades
              chamadas de Aspectos.
              Surgir em 1997 no Xerox Palo Alto Research Center,
              laborat´rio de pesquisas da Xerox.
                     o



      ´
      E uma extens˜o da POO (c´digo base) com mecanismos para lidar
                   a               o
      com interesses transversais.
Programa¸˜o Orientada a Aspectos
        ca
  Programa¸˜o Orientada a Aspectos (POA)
          ca




Exemplo ilustrativo - Interesses Transversais
Programa¸˜o Orientada a Aspectos
        ca
  Programa¸˜o Orientada a Aspectos (POA)
          ca




Exemplo Ilustrativo - Aspectos




      Invers˜o das dependˆncias
            a            e
Programa¸˜o Orientada a Aspectos
        ca
  Mecanismos POA




Mecanismos POA


      Joinpoints
      Instru¸˜es no fluxo do
            co
      programa:
          1   Execu¸˜o de M´todo
                   ca      e
          2   Acesso a atributo
          3   Constru¸˜o de objeto
                     ca
          4   Controle de exce¸˜o
                              ca
          5   Destrui¸˜o de objeto
                     ca
Programa¸˜o Orientada a Aspectos
        ca
  Mecanismos POA




Mecanismos POA


      Pointcuts

              Utiliza os Joinpoints para especificar pontos no programa
              onde ser´ introduzida determinada l´gica
                       a                          o


      Wildcards (Coringas)

              * Todos existentes         new *(*)
              + Todos com subclasses     call(Book+->update(2))
              || “ou”para combinar      before JPa, JPb{...}
Programa¸˜o Orientada a Aspectos
        ca
  Mecanismos POA




Mecanismos POA


      Advices

              Introduz (injeta) c´digo nos Pointcuts
                                  o
              3 tipos principais:
                     Before
                     Around
                     After
Programa¸˜o Orientada a Aspectos
        ca
  Mecanismos POA




Mecanismos POA
      Inter-type Declaration

              Introduz membros em unidades(classes/aspectos) existentes
              Membros s˜o:
                        a
                 1   Atributos
                 2   Constantes
                 3   M´todos
                       e
Programa¸˜o Orientada a Aspectos
        ca
  Mecanismos POA




Mecanismos POA

      Waver

              Junta os aspectos com o c´digo base para gerar arquivos
                                       o
              unicos que forma o programa final funcional.
              ´
Programa¸˜o Orientada a Aspectos
        ca
  E na pr´tica?
         a




E na pr´tica?
       a




                                   Como posso fazer isso funcionar?
Programa¸˜o Orientada a Aspectos
        ca
  E na pr´tica?
         a




E na pr´tica?
       a

      APDT: Aspect PHP Developement Tools

              http://code.google.com/p/apdt/
              Plugin para eclipse que oferece uma plataforma para POA
              com PHP. Integra as ferramentas de desenvolvimento PHP do
              eclipse (PDT) com a biblioteca PHPAspect e um PHPAspect
              Waver
Programa¸˜o Orientada a Aspectos
        ca
  E na pr´tica?
         a




E na pr´tica?
       a
Programa¸˜o Orientada a Aspectos
        ca
  Fim




Fim




                                   Perguntas?

Mais conteúdo relacionado

Mais procurados

Algoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de ProgramaçãoAlgoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de ProgramaçãoElaine Cecília Gatto
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Valmon Gaudencio
 
Paradigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoParadigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoFabio Spanhol
 
4 introdução ao paradigma funcional
4 introdução ao paradigma funcional4 introdução ao paradigma funcional
4 introdução ao paradigma funcionalPéricles Miranda
 
Introdução ao paradigma imperativo
Introdução ao paradigma imperativoIntrodução ao paradigma imperativo
Introdução ao paradigma imperativoTony Alexander Hild
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a AspectosRicardo Terra
 
Linguágens de programação
Linguágens de programaçãoLinguágens de programação
Linguágens de programaçãoAlbertoVach
 
Paradigmas de Programação
Paradigmas de ProgramaçãoParadigmas de Programação
Paradigmas de ProgramaçãoNatanael Simões
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Adriano Teixeira de Souza
 
Linguagem de programação
Linguagem de programação Linguagem de programação
Linguagem de programação Marcos Gregorio
 
Aula01 estrutura de dados - (começando as brincadeiras)
Aula01   estrutura de dados - (começando as brincadeiras)Aula01   estrutura de dados - (começando as brincadeiras)
Aula01 estrutura de dados - (começando as brincadeiras)Cleyton Fábio
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemassauloroos01
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programaçãoessa
 
Linguagens de programação 12º M12
Linguagens de programação 12º M12Linguagens de programação 12º M12
Linguagens de programação 12º M12Luis Ferreira
 
Introdução a Linguagem de Programação
Introdução a Linguagem de ProgramaçãoIntrodução a Linguagem de Programação
Introdução a Linguagem de ProgramaçãoJessica Ribeiro
 

Mais procurados (20)

Algoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de ProgramaçãoAlgoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de Programação
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Paradigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoParadigmas de Linguagens de Programação
Paradigmas de Linguagens de Programação
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
4 introdução ao paradigma funcional
4 introdução ao paradigma funcional4 introdução ao paradigma funcional
4 introdução ao paradigma funcional
 
Introdução ao paradigma imperativo
Introdução ao paradigma imperativoIntrodução ao paradigma imperativo
Introdução ao paradigma imperativo
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a Aspectos
 
Linguágens de programação
Linguágens de programaçãoLinguágens de programação
Linguágens de programação
 
Paradigmas de Programação
Paradigmas de ProgramaçãoParadigmas de Programação
Paradigmas de Programação
 
Principios e paradigmas_de_computacao2
Principios e paradigmas_de_computacao2Principios e paradigmas_de_computacao2
Principios e paradigmas_de_computacao2
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
 
Linguagem da programação
Linguagem da programaçãoLinguagem da programação
Linguagem da programação
 
Linguagem de programação
Linguagem de programação Linguagem de programação
Linguagem de programação
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programação
 
Aula01 estrutura de dados - (começando as brincadeiras)
Aula01   estrutura de dados - (começando as brincadeiras)Aula01   estrutura de dados - (começando as brincadeiras)
Aula01 estrutura de dados - (começando as brincadeiras)
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemas
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programação
 
Linguagens de programação 12º M12
Linguagens de programação 12º M12Linguagens de programação 12º M12
Linguagens de programação 12º M12
 
Introdução a Linguagem de Programação
Introdução a Linguagem de ProgramaçãoIntrodução a Linguagem de Programação
Introdução a Linguagem de Programação
 

Semelhante a Programação Orientada a Aspectos em PHP

Tech Thursday -Spring Roo
Tech Thursday -Spring RooTech Thursday -Spring Roo
Tech Thursday -Spring Roomarcosbeirigo
 
Curso Completo em APF - Analise de Ponto de Funcao
Curso Completo em APF - Analise de Ponto de FuncaoCurso Completo em APF - Analise de Ponto de Funcao
Curso Completo em APF - Analise de Ponto de FuncaoGrupo Treinar
 
Gestão de Projetos e Empreendedorismo (26/03/2013)
Gestão de Projetos e Empreendedorismo (26/03/2013)Gestão de Projetos e Empreendedorismo (26/03/2013)
Gestão de Projetos e Empreendedorismo (26/03/2013)Alessandro Almeida
 
Uma experiência acadêmica com Python
Uma experiência acadêmica com PythonUma experiência acadêmica com Python
Uma experiência acadêmica com PythonHenrique Bastos
 
Monografia eng soft1_halan
Monografia eng soft1_halanMonografia eng soft1_halan
Monografia eng soft1_halanHalan Ridolphi
 
PARADIGMAS_LINGUAGENS_PROG_aula02.pdf
PARADIGMAS_LINGUAGENS_PROG_aula02.pdfPARADIGMAS_LINGUAGENS_PROG_aula02.pdf
PARADIGMAS_LINGUAGENS_PROG_aula02.pdfAthena542429
 
Banca: Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizan...
Banca: Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizan...Banca: Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizan...
Banca: Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizan...Fernando Geraldo Mantoan
 
Metodologias Ágeis em Gerenciamento de Projetos
Metodologias Ágeis em Gerenciamento de ProjetosMetodologias Ágeis em Gerenciamento de Projetos
Metodologias Ágeis em Gerenciamento de ProjetosDaniel de Amaral
 
Desenvolvimento do Módulo de Planejamento do Ambiente Experimental SystEM-Env...
Desenvolvimento do Módulo de Planejamento do Ambiente Experimental SystEM-Env...Desenvolvimento do Módulo de Planejamento do Ambiente Experimental SystEM-Env...
Desenvolvimento do Módulo de Planejamento do Ambiente Experimental SystEM-Env...Edson Oliveira Junior
 
Ferramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareFerramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareelliando dias
 
Django para desenvolvimento web; porque ser repetitivo é chato.
Django para desenvolvimento web; porque ser repetitivo é chato.Django para desenvolvimento web; porque ser repetitivo é chato.
Django para desenvolvimento web; porque ser repetitivo é chato.Arthur Furlan
 

Semelhante a Programação Orientada a Aspectos em PHP (20)

Tech Thursday -Spring Roo
Tech Thursday -Spring RooTech Thursday -Spring Roo
Tech Thursday -Spring Roo
 
Academia do programador
Academia do programadorAcademia do programador
Academia do programador
 
Curso Completo em APF - Analise de Ponto de Funcao
Curso Completo em APF - Analise de Ponto de FuncaoCurso Completo em APF - Analise de Ponto de Funcao
Curso Completo em APF - Analise de Ponto de Funcao
 
Gestão de Projetos e Empreendedorismo (26/03/2013)
Gestão de Projetos e Empreendedorismo (26/03/2013)Gestão de Projetos e Empreendedorismo (26/03/2013)
Gestão de Projetos e Empreendedorismo (26/03/2013)
 
Uma experiência acadêmica com Python
Uma experiência acadêmica com PythonUma experiência acadêmica com Python
Uma experiência acadêmica com Python
 
Monografia eng soft1_halan
Monografia eng soft1_halanMonografia eng soft1_halan
Monografia eng soft1_halan
 
PARADIGMAS_LINGUAGENS_PROG_aula02.pdf
PARADIGMAS_LINGUAGENS_PROG_aula02.pdfPARADIGMAS_LINGUAGENS_PROG_aula02.pdf
PARADIGMAS_LINGUAGENS_PROG_aula02.pdf
 
ERP Metodologia Implantacao
ERP Metodologia ImplantacaoERP Metodologia Implantacao
ERP Metodologia Implantacao
 
Banca: Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizan...
Banca: Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizan...Banca: Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizan...
Banca: Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizan...
 
Aula1 Apresentacao TEES
Aula1 Apresentacao TEESAula1 Apresentacao TEES
Aula1 Apresentacao TEES
 
Processo de Software
Processo de SoftwareProcesso de Software
Processo de Software
 
Apresentação - POA
Apresentação - POAApresentação - POA
Apresentação - POA
 
Metodologias Ágeis em Gerenciamento de Projetos
Metodologias Ágeis em Gerenciamento de ProjetosMetodologias Ágeis em Gerenciamento de Projetos
Metodologias Ágeis em Gerenciamento de Projetos
 
Planificação do Projeto de Software
Planificação do Projeto de SoftwarePlanificação do Projeto de Software
Planificação do Projeto de Software
 
Desenvolvimento do Módulo de Planejamento do Ambiente Experimental SystEM-Env...
Desenvolvimento do Módulo de Planejamento do Ambiente Experimental SystEM-Env...Desenvolvimento do Módulo de Planejamento do Ambiente Experimental SystEM-Env...
Desenvolvimento do Módulo de Planejamento do Ambiente Experimental SystEM-Env...
 
Ferramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareFerramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de software
 
AOP
AOPAOP
AOP
 
Django para desenvolvimento web; porque ser repetitivo é chato.
Django para desenvolvimento web; porque ser repetitivo é chato.Django para desenvolvimento web; porque ser repetitivo é chato.
Django para desenvolvimento web; porque ser repetitivo é chato.
 
Plugins
PluginsPlugins
Plugins
 
Apresentação E-Profile
Apresentação E-ProfileApresentação E-Profile
Apresentação E-Profile
 

Programação Orientada a Aspectos em PHP

  • 1. Programa¸˜o Orientada a Aspectos ca Programa¸˜o Orientada a Aspectos ca Wesley Klewerton PHP-Day SERPRO Curitiba 01 de Junho de 2011
  • 2. Programa¸˜o Orientada a Aspectos ca Agenda Agenda 1 Apresenta¸˜o ca 2 Introdu¸˜o ca 3 Interesses Transversais 4 Programa¸˜o Orientada a Aspectos (POA) ca 5 Mecanismos POA 6 E na pr´tica? a 7 Fim
  • 3. Programa¸˜o Orientada a Aspectos ca Apresenta¸˜o ca Wesley Klewerton Short Bio Graduado em Sistemas de Informa¸˜o, 2 especializa¸˜es, ca co ˆ Mestrando em Inform´tica pela UFPR (Enfase em Engenharia de a Software - Teste de Software), desenvolvedor PHP desde 2004, colaborador do time de tradu¸˜o da documenta¸˜o do CakePHP, ca ca participante da tradu¸˜o do Ubuntu, e por ai vai... ca Contatos Email: wesleyklewerton@gmail.com Twitter: @wesleyklewerton Blog: www.wesleyk.com
  • 4. Programa¸˜o Orientada a Aspectos ca Introdu¸˜o ca Evolu¸˜o da Programa¸˜o ca ca
  • 5. Programa¸˜o Orientada a Aspectos ca Introdu¸˜o ca Programa¸˜o Orientada a Objetos (POO) ca Vantagens Modelo de Neg´cios o Abstra¸˜o ca Encapsulamento Reuso de Componentes Padr˜es o Facilidade de Manuten¸˜o ca
  • 6. Programa¸˜o Orientada a Aspectos ca Interesses Transversais Exemplo ilustrativo
  • 7. Programa¸˜o Orientada a Aspectos ca Interesses Transversais Exemplo ilustrativo - Interesses Transversais
  • 8. Programa¸˜o Orientada a Aspectos ca Interesses Transversais Exemplo ilustrativo - Interesses Transversais Sintomas N˜o s˜o tratados pelos mecanismos da POO a a Geram dois tipos de fenˆmenos: o Espalhamento Emaranhado Dificuldades Entendimento Reuso Manuten¸˜o ca Evolu¸˜o ca
  • 9. Programa¸˜o Orientada a Aspectos ca Interesses Transversais Exemplo Real - Apache Tomcat XML parsing in org.apache.tomcat
  • 10. Programa¸˜o Orientada a Aspectos ca Interesses Transversais Exemplo Real - Apache Tomcat Logging in org.apache.tomcat
  • 11. Programa¸˜o Orientada a Aspectos ca Interesses Transversais Interesses Transversais Onde s˜o encontrados? a Persistˆncia e Auditoria (logs) Controle de exce¸˜es co etc... Como podem ser otimizados? ???
  • 12. Programa¸˜o Orientada a Aspectos ca Programa¸˜o Orientada a Aspectos (POA) ca Programa¸˜o Orientada a Aspectos (POA) ca Procura modularizar os interesses transversais em unidades chamadas de Aspectos. Surgir em 1997 no Xerox Palo Alto Research Center, laborat´rio de pesquisas da Xerox. o ´ E uma extens˜o da POO (c´digo base) com mecanismos para lidar a o com interesses transversais.
  • 13. Programa¸˜o Orientada a Aspectos ca Programa¸˜o Orientada a Aspectos (POA) ca Exemplo ilustrativo - Interesses Transversais
  • 14. Programa¸˜o Orientada a Aspectos ca Programa¸˜o Orientada a Aspectos (POA) ca Exemplo Ilustrativo - Aspectos Invers˜o das dependˆncias a e
  • 15. Programa¸˜o Orientada a Aspectos ca Mecanismos POA Mecanismos POA Joinpoints Instru¸˜es no fluxo do co programa: 1 Execu¸˜o de M´todo ca e 2 Acesso a atributo 3 Constru¸˜o de objeto ca 4 Controle de exce¸˜o ca 5 Destrui¸˜o de objeto ca
  • 16. Programa¸˜o Orientada a Aspectos ca Mecanismos POA Mecanismos POA Pointcuts Utiliza os Joinpoints para especificar pontos no programa onde ser´ introduzida determinada l´gica a o Wildcards (Coringas) * Todos existentes new *(*) + Todos com subclasses call(Book+->update(2)) || “ou”para combinar before JPa, JPb{...}
  • 17. Programa¸˜o Orientada a Aspectos ca Mecanismos POA Mecanismos POA Advices Introduz (injeta) c´digo nos Pointcuts o 3 tipos principais: Before Around After
  • 18. Programa¸˜o Orientada a Aspectos ca Mecanismos POA Mecanismos POA Inter-type Declaration Introduz membros em unidades(classes/aspectos) existentes Membros s˜o: a 1 Atributos 2 Constantes 3 M´todos e
  • 19. Programa¸˜o Orientada a Aspectos ca Mecanismos POA Mecanismos POA Waver Junta os aspectos com o c´digo base para gerar arquivos o unicos que forma o programa final funcional. ´
  • 20. Programa¸˜o Orientada a Aspectos ca E na pr´tica? a E na pr´tica? a Como posso fazer isso funcionar?
  • 21. Programa¸˜o Orientada a Aspectos ca E na pr´tica? a E na pr´tica? a APDT: Aspect PHP Developement Tools http://code.google.com/p/apdt/ Plugin para eclipse que oferece uma plataforma para POA com PHP. Integra as ferramentas de desenvolvimento PHP do eclipse (PDT) com a biblioteca PHPAspect e um PHPAspect Waver
  • 22. Programa¸˜o Orientada a Aspectos ca E na pr´tica? a E na pr´tica? a
  • 23. Programa¸˜o Orientada a Aspectos ca Fim Fim Perguntas?