O documento apresenta uma introdução à programação orientada a aspectos (POA) e sua implementação com a ferramenta AspectJ em Java. Ele descreve os conceitos de interesses transversais, aspectos, joinpoints, pointcuts e advices da POA e como o AspectJ utiliza esses elementos para estender Java e permitir a separação de preocupações na programação.
1. P.O.A. (PROGRAMAÇÃO Implementação
em Java por
ORIENTADA A meio da
ferramenta
ASPECTOS) AspectJ.
Giovani Fontes
Rafael Mathias
2. INTRODUÇÃO A POA
Surgiu em 1996, criado por Gregor Kickzales (XEROX).
Separar as responsabilidades em partes menores.
Facilidade na manutenção do código .
Facilidade nas alterações das funcionalidades.
POA trata dos interesses transversais como uma extensão.
3. INTERESSES TRANSVERSAIS
(CROSSCUTTING CONCERNS) E ASPECTOS
É comum encontrar área de interesses espalhados nas
aplicações.
POO tem facilidade em separar as responsabilidades
funcionais.
POO não separa as não funcionais
(Persistências, autenticação de usuários, desempenho e etc.)
POA é um complemento para POO
(Encapsula esses códigos espalhados)
Esses que são chamados de aspectos.
5. ETAPAS PARA A APLICAÇÃO DA POA
Decomposição
Implementação
Recomposição
6. ASPECTJ
O AspectJ é uma ferramenta open source que acrescenta os conceitos
de AOP à linguagem Java, através de uma extensão à linguagem: os
"aspects". Ele utiliza Java como a linguagem para a implementação dos
concerns individuais, e tem construções para a especificação das
regras de weaving, que são especificadas em termos de join points,
pointcuts e advices, e tudo isto é encapsulado em um aspect.
O AspectJ pode ser instalado como um plug-in tanto para a IDE Eclipse,
quanto para Netbeans.
7. ASPECTJ
Os termos específicos que o AspectJ acrescenta ao java são:
Joinpoints;
Pointcuts;
Advices;
Aspects.
8. JOINPOINTS
Joinpoints representam eventos de interesse do fluxo de execução.
Quando a execução passa por um joinpoint o aspecto pode agir naquele
ponto.
Estes podem ser: chamadas de métodos, acessos a membros de uma
classe, etc. Joinpoints podem conter outros Joinpoints.
9. POINTCUTS
Um pointcut nada mais é, do que um agrupamento de
joinpoints, pois podem acontecer muitas ocorrências de
joinpoints de um mesmo tipo.
11. ASPECTJ
Esses conceitos podem ser melhor compreendidos se
pensarmos que aspectos são estruturas semelhantes às
classes, advices são semelhantes ao métodos, joinpoints
seriam atributos e os pointcuts algo como triggers sobre os
joinpoints.
13. OUTROS EXEMPLOS DE FERRAMENTAS
DE SUPORTE A POA
HyperJ, QIDL, AOP/ST, AspectH, D, COOL, RIDL, IL, D 2AL, JST,
AspectIX, Aspect#.
14. CONCLUSÃO
A orientação a aspectos propõe sobre a orientação a objetos
algo como o que a orientação a objetos propôs sobre a
programação estruturada, ou seja, elementos comuns devem
ser encapsulados em um só local para uma melhor definição
e facilidade de manutenção.
Diversas pesquisas vem sendo feitas em cima deste assunto,
mas POA ainda está engatinhando e mesmo sendo um
paradigma inovador a sua utilização ainda não é muito
difundida, devido a falta de padronização.