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 ???