15
Equipe Equipe: Ana Carolina M. Pilatti Ana Carolina M. Pilatti Igor de Souza Paiva Igor de Souza Paiva Rafael Stubs Parpinelli Rafael Stubs Parpinelli Vera Lúcia Marchiori Vera Lúcia Marchiori Programa de Pós-Graduação em Informática Aplicada Programa de Pós-Graduação em Informática Aplicada Pontifícia Universidade Católica do Pontifícia Universidade Católica do Paraná Paraná Prof. Dr. Alcides Calsavara Prof. Dr. Alcides Calsavara Programação Programação Orientada a Aspectos Orientada a Aspectos - AspectJ - AspectJ

Equipe Equipe: Ana Carolina M. Pilatti Igor de Souza Paiva Igor de Souza Paiva Rafael Stubs Parpinelli Rafael Stubs Parpinelli Vera Lúcia Marchiori Vera

Embed Size (px)

Citation preview

Page 1: Equipe Equipe: Ana Carolina M. Pilatti Igor de Souza Paiva Igor de Souza Paiva Rafael Stubs Parpinelli Rafael Stubs Parpinelli Vera Lúcia Marchiori Vera

EquipeEquipe: Ana Carolina M. PilattiAna Carolina M. Pilatti Igor de Souza PaivaIgor de Souza Paiva Rafael Stubs ParpinelliRafael Stubs Parpinelli Vera Lúcia MarchioriVera Lúcia Marchiori

Programa de Pós-Graduação em Informática Aplicada Programa de Pós-Graduação em Informática Aplicada Pontifícia Universidade Católica do ParanáPontifícia Universidade Católica do Paraná

Prof. Dr. Alcides CalsavaraProf. Dr. Alcides Calsavara

Programação Orientada a Programação Orientada a Aspectos - AspectJAspectos - AspectJ

Page 2: Equipe Equipe: Ana Carolina M. Pilatti Igor de Souza Paiva Igor de Souza Paiva Rafael Stubs Parpinelli Rafael Stubs Parpinelli Vera Lúcia Marchiori Vera

SumárioSumário• AOP – Programação Orientada a Aspectos• Aspectos e Concerns• Cross-cutting e Weaving• AspectJ• Join Point• Pointcut• Advice• Introduction• Implementação• Conclusão• Referência Bibliográfica

Page 3: Equipe Equipe: Ana Carolina M. Pilatti Igor de Souza Paiva Igor de Souza Paiva Rafael Stubs Parpinelli Rafael Stubs Parpinelli Vera Lúcia Marchiori Vera

AOP AOP (Programação Orientada a Aspectos)(Programação Orientada a Aspectos)Definição:

Técnica de programação que proporciona a abstração dos concerns de um sistema complexo, em um novo programa com alta modularidade, através de códigos simples de fácil desenvolvimento e manutenção, com grande potencial de reuso e otimização do uso da memória.

Page 4: Equipe Equipe: Ana Carolina M. Pilatti Igor de Souza Paiva Igor de Souza Paiva Rafael Stubs Parpinelli Rafael Stubs Parpinelli Vera Lúcia Marchiori Vera

AspectosAspectosCaptura dos concerns de um sistema em

unidades modulares de implementação. São definidos de maneira similar a classes.

ConcernsConcernsSão implementações necessárias dentro de

um sistema, mas que não são o foco principal do mesmo.

Exemplos: sincronização, processamento de falhas, logging, política de segurança, persistência de dados, etc.

Page 5: Equipe Equipe: Ana Carolina M. Pilatti Igor de Souza Paiva Igor de Souza Paiva Rafael Stubs Parpinelli Rafael Stubs Parpinelli Vera Lúcia Marchiori Vera

Cross-cuttingCross-cuttingApós abstrair os Após abstrair os concernsconcerns que afetam a que afetam a

modularidade de um sistema em OOP implementa-modularidade de um sistema em OOP implementa-se estes se estes concernsconcerns em Aspectos através da AOP. em Aspectos através da AOP. Durante o Durante o aspect weaveraspect weaver estes dois programas irão estes dois programas irão entrelaçar-se.entrelaçar-se.

WeavingWeavingO O aspect weaveraspect weaver faz o trabalho de integração faz o trabalho de integração

entre os dois programas de entrada (OOP e AOP).entre os dois programas de entrada (OOP e AOP).

Page 6: Equipe Equipe: Ana Carolina M. Pilatti Igor de Souza Paiva Igor de Souza Paiva Rafael Stubs Parpinelli Rafael Stubs Parpinelli Vera Lúcia Marchiori Vera

Aspect WeaverAspect Weaver

Page 7: Equipe Equipe: Ana Carolina M. Pilatti Igor de Souza Paiva Igor de Souza Paiva Rafael Stubs Parpinelli Rafael Stubs Parpinelli Vera Lúcia Marchiori Vera

AspectJAspectJDefinição:

Linguagem de extensão a Java orientada a aspectos.Durante o weaver, funciona como um meta-programa, sendo chamado dentro do programa OOP.

Suporta 2 tipos de cross-cutting:• Dynamic cross-cutting – define implementações adicionais para rodar em pontos bem definidos na execução do programa.• Static cross-cutting – afeta tipos estáticos do programa.

Page 8: Equipe Equipe: Ana Carolina M. Pilatti Igor de Souza Paiva Igor de Souza Paiva Rafael Stubs Parpinelli Rafael Stubs Parpinelli Vera Lúcia Marchiori Vera

Join Point Join Point São pontos bem definidos na execução do São pontos bem definidos na execução do programa.programa.

PointcutPointcutSão coleções de join points que definem eventos.São coleções de join points que definem eventos.

AdviceAdviceSão métodos especiais associados aos Pointcuts São métodos especiais associados aos Pointcuts que adicionam comportamento aos Join Points.que adicionam comportamento aos Join Points.(Before, After e Around)(Before, After e Around)

IntroductionIntroductionAdiciona novos membros a classes e altera o Adiciona novos membros a classes e altera o relacionamento de herança entre as classes.relacionamento de herança entre as classes.

Page 9: Equipe Equipe: Ana Carolina M. Pilatti Igor de Souza Paiva Igor de Souza Paiva Rafael Stubs Parpinelli Rafael Stubs Parpinelli Vera Lúcia Marchiori Vera

public aspect AutoLog {

pointcut publicMethods ( ): execution (public * org.apache.cactus..* (..) );

pointcut logObjectCalls ( ):execution ( * Logger.* (..) );

pointcut loggableCalls ( ):publicMethods ( ) && ! logObjectCalls ( );

before ( ) : loggableCalls ( ) {Logger.entry(thisJoinPoint.getSignature ( ).toString ( ) ); }

after ( ): loggableCalls ( ) {Logger.exit(thisJoinPoint.getSignature ( ). toString ( ) ); }

}

Declaração Aspecto

Pointcut “publicMethods”

Advice before e after que adicionam comportamento ao Join Point

Join Point “execution”

Page 10: Equipe Equipe: Ana Carolina M. Pilatti Igor de Souza Paiva Igor de Souza Paiva Rafael Stubs Parpinelli Rafael Stubs Parpinelli Vera Lúcia Marchiori Vera

Join PointJoin Point

Page 11: Equipe Equipe: Ana Carolina M. Pilatti Igor de Souza Paiva Igor de Souza Paiva Rafael Stubs Parpinelli Rafael Stubs Parpinelli Vera Lúcia Marchiori Vera

PrimitivePrimitiveJoin Join

PointsPoints

Page 12: Equipe Equipe: Ana Carolina M. Pilatti Igor de Souza Paiva Igor de Souza Paiva Rafael Stubs Parpinelli Rafael Stubs Parpinelli Vera Lúcia Marchiori Vera

ImplementaçãoImplementaçãoObjetivo Objetivo

– Implementar o mecanismo arquitetural persistência nas classes Telefone e TelefoneAvancado do trabalho final;

– Apresentar a implementação usando uma abordagem tradicional;

– Apresentar a implementação usando AOP com AspectJ.

Page 13: Equipe Equipe: Ana Carolina M. Pilatti Igor de Souza Paiva Igor de Souza Paiva Rafael Stubs Parpinelli Rafael Stubs Parpinelli Vera Lúcia Marchiori Vera

ConclusõesConclusõesA utilização de AOP tem ajudado a

aumentar a modularidade e a diminuir consideravelmente a complexidade das aplicações orientadas a objetos.

AspectJ é uma poderosa linguagem para implementar AOP.

Page 14: Equipe Equipe: Ana Carolina M. Pilatti Igor de Souza Paiva Igor de Souza Paiva Rafael Stubs Parpinelli Rafael Stubs Parpinelli Vera Lúcia Marchiori Vera

Referências BibliográficasReferências BibliográficasKICZALES, Gregor et. al., Aspect-oriented Programming, ECOOP, Finland, June 1997.

KICZALES, Gregor et. al., Na overview of AspectJ, Departament of Computer Science and

Engineering, University of California, San Diego.

LESIECKI, Nicholas, Improve modularity with aspect-oriented programming, Technical Team Lead, January 2002.

Page 15: Equipe Equipe: Ana Carolina M. Pilatti Igor de Souza Paiva Igor de Souza Paiva Rafael Stubs Parpinelli Rafael Stubs Parpinelli Vera Lúcia Marchiori Vera

DÚVIDAS?DÚVIDAS?