Este documento apresenta sobre programação orientada a aspectos (POA). Discute como a POA pode modularizar interesses transversais em unidades chamadas aspectos para lidar com desafios da programação orientada a objetos como espalhamento e emaranhamento de código. Explica os principais mecanismos da POA incluindo joinpoints, pointcuts, advices e inter-type declaration. Finalmente, discute como implementar POA na prática usando ferramentas como APDT para 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
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
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