Linguagem orientada a
Aspectos 2
Luiz Carlos d’Oleron
Tiago Vinícius
Orientação a Aspectos
• Separação de concerns no projeto
• Manutenção do código através do controle de
– Tangled code
– Scattered code
• Estrutura do programa como combinação de concerns
implementados
AspectJ in Action, 2003. Figura 1.1, página 8
AspectJ
• Implementação de conceitos AOP
– www.eclipse.org/aspectj
• Outras implementações
– AspectWerkz
• http://aspectwerkz.codehaus.org
– JBoss-AOP
• http://www.jboss.org/jbossaop/
Aspectos
• Incluem estruturas utilizadas para tratamento dos
concerns
– Pointcuts, advices, introductions
– Atributos, métodos
• Podem ser abstratos
• Estender classes, aspectos abstratos e implementar
interfaces
• Não são instanciados diretamente
Pointcuts e Advices
• Pointcut
– Estrutura contida no aspecto que declara qual
parte do código será interceptada
• Advices
– Especificam como o join point será de fato
interceptado
• Before
• After
• Around
Join Points
• Pontos identificados na execução do programa
–
–
–
–
Chamadas e execuções de métodos
Instanciação de objetos
Acesso a campos
Lançamento de exceções
Features de LOA1
•
Adição de Join Points para leitura/escrita de atributos ;
•
Possibilidade de introdução de atributos e métodos;
•
Uso de Matching na definição de Pointcuts;
•
Adição dos comandos Cflow e Cflowbelow;
•
Adição de Within e Withincode;
•
Adição de objeto thisJoinPoint;
LOA2
•
Aspecto tratado como uma extensão do conceito de classe
•
Declaração e utilização de atributos e métodos dentro do aspecto
•
Introdução de atributos e métodos em uma classe
•
Alteração no tratamento do this e utilização no escopo do aspecto
•
Refactoring do checaTipo() para lançamento de exceções
Modificações
• Gramática
• Estrutura de classes
• Ambiente de execução
Dúvidas
???
Download

Linguagem orientada a aspectos 2( LOA2)