Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

23
Programa¸c˜ ao Orientada a Aspectos Programa¸c˜ ao Orientada a Aspectos Wesley Klewerton PHP-Day SERPRO Curitiba 01 de Junho de 2011

Transcript of Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

Page 1: Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

Programacao Orientada a Aspectos

Programacao Orientada a Aspectos

Wesley Klewerton

PHP-Day SERPRO Curitiba

01 de Junho de 2011

Page 2: Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

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

Page 3: Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

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

Page 4: Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

Programacao Orientada a Aspectos

Introducao

Evolucao da Programacao

Page 5: Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

Programacao Orientada a Aspectos

Introducao

Programacao Orientada a Objetos (POO)

Vantagens

Modelo de Negocios

Abstracao

Encapsulamento

Reuso de Componentes

Padroes

Facilidade de Manutencao

Page 6: Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

Programacao Orientada a Aspectos

Interesses Transversais

Exemplo ilustrativo

Page 7: Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

Programacao Orientada a Aspectos

Interesses Transversais

Exemplo ilustrativo - Interesses Transversais

Page 8: Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

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

Page 9: Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

Programacao Orientada a Aspectos

Interesses Transversais

Exemplo Real - Apache Tomcat

XML parsing in org.apache.tomcat

Page 10: Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

Programacao Orientada a Aspectos

Interesses Transversais

Exemplo Real - Apache Tomcat

Logging in org.apache.tomcat

Page 11: Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

Programacao Orientada a Aspectos

Interesses Transversais

Interesses Transversais

Onde sao encontrados?

Persistencia

Auditoria (logs)

Controle de excecoes

etc...

Como podem ser otimizados?

???

Page 12: Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

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.

Page 13: Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

Programacao Orientada a Aspectos

Programacao Orientada a Aspectos (POA)

Exemplo ilustrativo - Interesses Transversais

Page 14: Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

Programacao Orientada a Aspectos

Programacao Orientada a Aspectos (POA)

Exemplo Ilustrativo - Aspectos

Inversao das dependencias

Page 15: Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

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

Page 16: Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

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{...}

Page 17: Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

Programacao Orientada a Aspectos

Mecanismos POA

Mecanismos POA

Advices

Introduz (injeta) codigo nos Pointcuts

3 tipos principais:

BeforeAroundAfter

Page 18: Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

Programacao Orientada a Aspectos

Mecanismos POA

Mecanismos POA

Inter-type Declaration

Introduz membros em unidades(classes/aspectos) existentes

Membros sao:

1 Atributos2 Constantes3 Metodos

Page 19: Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

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.

Page 20: Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

Programacao Orientada a Aspectos

E na pratica?

E na pratica?

Como posso fazer isso funcionar?

Page 21: Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

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

Page 22: Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

Programacao Orientada a Aspectos

E na pratica?

E na pratica?

Page 23: Programação Orientada a Aspectos - PHPDay SERPRO Curitiba

Programacao Orientada a Aspectos

Fim

Fim

Perguntas?