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?

Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

  • 1.
    Programa¸˜o Orientada aAspectos ca Programa¸˜o Orientada a Aspectos ca Wesley Klewerton PHP-Day SERPRO Curitiba 01 de Junho de 2011
  • 2.
    Programa¸˜o Orientada aAspectos 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 aAspectos 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 aAspectos ca Introdu¸˜o ca Evolu¸˜o da Programa¸˜o ca ca
  • 5.
    Programa¸˜o Orientada aAspectos 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 aAspectos ca Interesses Transversais Exemplo ilustrativo
  • 7.
    Programa¸˜o Orientada aAspectos ca Interesses Transversais Exemplo ilustrativo - Interesses Transversais
  • 8.
    Programa¸˜o Orientada aAspectos 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 aAspectos ca Interesses Transversais Exemplo Real - Apache Tomcat XML parsing in org.apache.tomcat
  • 10.
    Programa¸˜o Orientada aAspectos ca Interesses Transversais Exemplo Real - Apache Tomcat Logging in org.apache.tomcat
  • 11.
    Programa¸˜o Orientada aAspectos 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 aAspectos 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 aAspectos ca Programa¸˜o Orientada a Aspectos (POA) ca Exemplo ilustrativo - Interesses Transversais
  • 14.
    Programa¸˜o Orientada aAspectos ca Programa¸˜o Orientada a Aspectos (POA) ca Exemplo Ilustrativo - Aspectos Invers˜o das dependˆncias a e
  • 15.
    Programa¸˜o Orientada aAspectos 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 aAspectos 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 aAspectos ca Mecanismos POA Mecanismos POA Advices Introduz (injeta) c´digo nos Pointcuts o 3 tipos principais: Before Around After
  • 18.
    Programa¸˜o Orientada aAspectos 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 aAspectos 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 aAspectos ca E na pr´tica? a E na pr´tica? a Como posso fazer isso funcionar?
  • 21.
    Programa¸˜o Orientada aAspectos 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 aAspectos ca E na pr´tica? a E na pr´tica? a
  • 23.
    Programa¸˜o Orientada aAspectos ca Fim Fim Perguntas?