SlideShare uma empresa Scribd logo
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

PDF
Orientação a Aspectos em PHP
PDF
Programação Orientada a Aspectos - PHPDay SERPRO Curitiba
PDF
01 aula1 habib
PDF
Egenharia de Software Orientado a Aspectos
PPT
Apresentação final
PDF
Paradigmas de Programação - Imperativo, Orientado a Objetos e Funcional
PDF
1.1.paradigmas
PPT
Paradigmas de Linguagens de Programacao - Aula #1
Orientação a Aspectos em PHP
Programação Orientada a Aspectos - PHPDay SERPRO Curitiba
01 aula1 habib
Egenharia de Software Orientado a Aspectos
Apresentação final
Paradigmas de Programação - Imperativo, Orientado a Objetos e Funcional
1.1.paradigmas
Paradigmas de Linguagens de Programacao - Aula #1

Mais procurados (20)

PPTX
Algoritmos - Paradigmas de Programação
PPT
Paradigmas De Linguagem De Programação.
PDF
Paradigmas de Linguagens de Programação
ODP
Paradigmas de programação
PDF
Paradigmas de programação
PPTX
4 introdução ao paradigma funcional
PDF
Introdução ao paradigma imperativo
PDF
Programação Orientada a Aspectos
PPTX
Linguágens de programação
PPTX
Paradigmas de Programação
PPT
Principios e paradigmas_de_computacao2
PDF
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
PPTX
Linguagem da programação
PPT
Linguagem de programação
PDF
Linguagens de programação
PDF
Aula01 estrutura de dados - (começando as brincadeiras)
PPT
Modelagem de sistemas
PDF
Linguagens de programação
PPT
Linguagens de programação 12º M12
PPTX
Introdução a Linguagem de Programação
Algoritmos - Paradigmas de Programação
Paradigmas De Linguagem De Programação.
Paradigmas de Linguagens de Programação
Paradigmas de programação
Paradigmas de programação
4 introdução ao paradigma funcional
Introdução ao paradigma imperativo
Programação Orientada a Aspectos
Linguágens de programação
Paradigmas de Programação
Principios e paradigmas_de_computacao2
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Linguagem da programação
Linguagem de programação
Linguagens de programação
Aula01 estrutura de dados - (começando as brincadeiras)
Modelagem de sistemas
Linguagens de programação
Linguagens de programação 12º M12
Introdução a Linguagem de Programação
Anúncio

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

PPT
Tech Thursday -Spring Roo
PDF
Curso Completo em APF - Analise de Ponto de Funcao
PDF
Gestão de Projetos e Empreendedorismo (26/03/2013)
ODP
Uma experiência acadêmica com Python
PDF
Monografia eng soft1_halan
PDF
PARADIGMAS_LINGUAGENS_PROG_aula02.pdf
PDF
ERP Metodologia Implantacao
PDF
Banca: Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizan...
PPT
Aula1 Apresentacao TEES
PDF
Processo de Software
PPTX
Apresentação - POA
PDF
Metodologias Ágeis em Gerenciamento de Projetos
PPT
Planificação do Projeto de Software
PDF
Desenvolvimento do Módulo de Planejamento do Ambiente Experimental SystEM-Env...
PDF
Ferramenta de apoio a gerência de configuração de software
PPTX
PDF
Django para desenvolvimento web; porque ser repetitivo é chato.
PDF
PDF
Apresentação E-Profile
Tech Thursday -Spring Roo
Curso Completo em APF - Analise de Ponto de Funcao
Gestão de Projetos e Empreendedorismo (26/03/2013)
Uma experiência acadêmica com Python
Monografia eng soft1_halan
PARADIGMAS_LINGUAGENS_PROG_aula02.pdf
ERP Metodologia Implantacao
Banca: Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizan...
Aula1 Apresentacao TEES
Processo de Software
Apresentação - POA
Metodologias Ágeis em Gerenciamento de Projetos
Planificação do Projeto de Software
Desenvolvimento do Módulo de Planejamento do Ambiente Experimental SystEM-Env...
Ferramenta de apoio a gerência de configuração de software
Django para desenvolvimento web; porque ser repetitivo é chato.
Apresentação E-Profile
Anúncio

Último (11)

PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PPTX
Utilizando code blockes por andre backes
PDF
Jira Software projetos completos com scrum
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Tipos de servidor em redes de computador.pptx
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Eng. Software - pontos essenciais para o início
PPT
Conceitos básicos de Redes Neurais Artificiais
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Utilizando code blockes por andre backes
Jira Software projetos completos com scrum
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Manejo integrado de pragas na cultura do algodão
Viasol Energia Solar -Soluções para geração e economia de energia
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Tipos de servidor em redes de computador.pptx
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Eng. Software - pontos essenciais para o início
Conceitos básicos de Redes Neurais Artificiais

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?