Programação Orientada a Aspectos em PHP

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

description

Palestra realizada no Serpro PHP Day, no dia 1º de junho de 2011, na regional Curitiba do Serpro.

Transcript of Programação Orientada a Aspectos em PHP

Page 1: Programação Orientada a Aspectos em PHP

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 em PHP

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 em PHP

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 em PHP

Programacao Orientada a Aspectos

Introducao

Evolucao da Programacao

Page 5: Programação Orientada a Aspectos em PHP

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 em PHP

Programacao Orientada a Aspectos

Interesses Transversais

Exemplo ilustrativo

Page 7: Programação Orientada a Aspectos em PHP

Programacao Orientada a Aspectos

Interesses Transversais

Exemplo ilustrativo - Interesses Transversais

Page 8: Programação Orientada a Aspectos em PHP

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 em PHP

Programacao Orientada a Aspectos

Interesses Transversais

Exemplo Real - Apache Tomcat

XML parsing in org.apache.tomcat

Page 10: Programação Orientada a Aspectos em PHP

Programacao Orientada a Aspectos

Interesses Transversais

Exemplo Real - Apache Tomcat

Logging in org.apache.tomcat

Page 11: Programação Orientada a Aspectos em PHP

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 em PHP

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 em PHP

Programacao Orientada a Aspectos

Programacao Orientada a Aspectos (POA)

Exemplo ilustrativo - Interesses Transversais

Page 14: Programação Orientada a Aspectos em PHP

Programacao Orientada a Aspectos

Programacao Orientada a Aspectos (POA)

Exemplo Ilustrativo - Aspectos

Inversao das dependencias

Page 15: Programação Orientada a Aspectos em PHP

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 em PHP

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 em PHP

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 em PHP

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 em PHP

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 em PHP

Programacao Orientada a Aspectos

E na pratica?

E na pratica?

Como posso fazer isso funcionar?

Page 21: Programação Orientada a Aspectos em PHP

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 em PHP

Programacao Orientada a Aspectos

E na pratica?

E na pratica?

Page 23: Programação Orientada a Aspectos em PHP

Programacao Orientada a Aspectos

Fim

Fim

Perguntas?