Programacao Orientada a Aspectos
Programacao Orientada a Aspectos
Wesley Klewerton
PHP-Day SERPRO Curitiba
01 de Junho de 2011
Programacao Orientada a Aspectos
Agenda
Agenda
1 Apresentacao
2 Introducao
3 Interesses Transversais
4 Programacao Orientada a Aspectos (POA)
5 Mecanismos POA
6 E na pratica?
7 Fim
Programacao Orientada a Aspectos
Apresentacao
Wesley Klewerton
Short Bio
Graduado em Sistemas de Informacao, 2 especializacoes,Mestrando em Informatica pela UFPR (Enfase em Engenharia deSoftware - Teste de Software), desenvolvedor PHP desde 2004,colaborador do time de traducao da documentacao do CakePHP,participante da traducao do Ubuntu, e por ai vai...
Contatos
Email: [email protected]
Twitter: @wesleyklewerton
Blog: www.wesleyk.com
Programacao Orientada a Aspectos
Introducao
Evolucao da Programacao
Programacao Orientada a Aspectos
Introducao
Programacao Orientada a Objetos (POO)
Vantagens
Modelo de Negocios
Abstracao
Encapsulamento
Reuso de Componentes
Padroes
Facilidade de Manutencao
Programacao Orientada a Aspectos
Interesses Transversais
Exemplo ilustrativo
Programacao Orientada a Aspectos
Interesses Transversais
Exemplo ilustrativo - Interesses Transversais
Programacao Orientada a Aspectos
Interesses Transversais
Exemplo ilustrativo - Interesses Transversais
Sintomas
Nao sao tratados pelos mecanismos da POO
Geram dois tipos de fenomenos:
EspalhamentoEmaranhado
Dificuldades
Entendimento
Reuso
Manutencao
Evolucao
Programacao Orientada a Aspectos
Interesses Transversais
Exemplo Real - Apache Tomcat
XML parsing in org.apache.tomcat
Programacao Orientada a Aspectos
Interesses Transversais
Exemplo Real - Apache Tomcat
Logging in org.apache.tomcat
Programacao Orientada a Aspectos
Interesses Transversais
Interesses Transversais
Onde sao encontrados?
Persistencia
Auditoria (logs)
Controle de excecoes
etc...
Como podem ser otimizados?
???
Programacao Orientada a Aspectos
Programacao Orientada a Aspectos (POA)
Programacao Orientada a Aspectos (POA)
Procura modularizar os interesses transversais em unidadeschamadas de Aspectos.
Surgir em 1997 no Xerox Palo Alto Research Center,laboratorio de pesquisas da Xerox.
E uma extensao da POO (codigo base) com mecanismos para lidarcom interesses transversais.
Programacao Orientada a Aspectos
Programacao Orientada a Aspectos (POA)
Exemplo ilustrativo - Interesses Transversais
Programacao Orientada a Aspectos
Programacao Orientada a Aspectos (POA)
Exemplo Ilustrativo - Aspectos
Inversao das dependencias
Programacao Orientada a Aspectos
Mecanismos POA
Mecanismos POA
Joinpoints
Instrucoes no fluxo doprograma:
1 Execucao de Metodo
2 Acesso a atributo
3 Construcao de objeto
4 Controle de excecao
5 Destruicao de objeto
Programacao Orientada a Aspectos
Mecanismos POA
Mecanismos POA
Pointcuts
Utiliza os Joinpoints para especificar pontos no programaonde sera introduzida determinada logica
Wildcards (Coringas)
* Todos existentes new *(*)
+ Todos com subclasses call(Book+->update(2))
|| “ou”para combinar before JPa, JPb{...}
Programacao Orientada a Aspectos
Mecanismos POA
Mecanismos POA
Advices
Introduz (injeta) codigo nos Pointcuts
3 tipos principais:
BeforeAroundAfter
Programacao Orientada a Aspectos
Mecanismos POA
Mecanismos POA
Inter-type Declaration
Introduz membros em unidades(classes/aspectos) existentes
Membros sao:
1 Atributos2 Constantes3 Metodos
Programacao Orientada a Aspectos
Mecanismos POA
Mecanismos POA
Waver
Junta os aspectos com o codigo base para gerar arquivosunicos que forma o programa final funcional.
Programacao Orientada a Aspectos
E na pratica?
E na pratica?
Como posso fazer isso funcionar?
Programacao Orientada a Aspectos
E na pratica?
E na pratica?
APDT: Aspect PHP Developement Tools
http://code.google.com/p/apdt/
Plugin para eclipse que oferece uma plataforma para POAcom PHP. Integra as ferramentas de desenvolvimento PHP doeclipse (PDT) com a biblioteca PHPAspect e um PHPAspectWaver
Programacao Orientada a Aspectos
E na pratica?
E na pratica?
Programacao Orientada a Aspectos
Fim
Fim
Perguntas?
Top Related