SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
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?

Más contenido relacionado

Destacado

Historia de los impuestos en colombia
Historia de los impuestos en colombiaHistoria de los impuestos en colombia
Historia de los impuestos en colombia
andrestoro14091230
 
Nouveau document microsoft word
Nouveau document microsoft wordNouveau document microsoft word
Nouveau document microsoft word
msicc
 
Dieta equilibrada para adelgazar
Dieta equilibrada para adelgazarDieta equilibrada para adelgazar
Dieta equilibrada para adelgazar
Fernando Zelada
 

Destacado (11)

Tecnologia na educação
Tecnologia na educaçãoTecnologia na educação
Tecnologia na educação
 
Protejamos el agua
Protejamos el aguaProtejamos el agua
Protejamos el agua
 
Ud1 t2 ac3_lezly_reyesn
Ud1 t2 ac3_lezly_reyesnUd1 t2 ac3_lezly_reyesn
Ud1 t2 ac3_lezly_reyesn
 
Historia de los impuestos en colombia
Historia de los impuestos en colombiaHistoria de los impuestos en colombia
Historia de los impuestos en colombia
 
Teroria de las Comunicaciones
Teroria de las ComunicacionesTeroria de las Comunicaciones
Teroria de las Comunicaciones
 
Nouveau document microsoft word
Nouveau document microsoft wordNouveau document microsoft word
Nouveau document microsoft word
 
Biomas v
Biomas vBiomas v
Biomas v
 
Dieta equilibrada para adelgazar
Dieta equilibrada para adelgazarDieta equilibrada para adelgazar
Dieta equilibrada para adelgazar
 
Sistema de información
Sistema de informaciónSistema de información
Sistema de información
 
Trabajo de informatica
Trabajo de informaticaTrabajo de informatica
Trabajo de informatica
 
Ley biocombustible
Ley biocombustibleLey biocombustible
Ley biocombustible
 

Similar a Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

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
Grupo Treinar
 
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
 
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
elliando dias
 

Similar a Programação Orientada a Aspectos - PHPDay SERPRO Curitiba (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
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a Aspectos
 
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
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
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.
 

Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

  • 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?