Programação Orientada a Aspectos
Sandra
Suzanna
Objetivo
Oferecer suporte para o programador na tarefa de separar claramente os componentes dos aspectos, os componentes entre si e os aspectos entre si, utilizandose de mecanismos que permitam a abstração e composição destas, produzindo o sistema desejado.
Exemplo Prático
Sistema Bancário: Transferindo dinheiro.
Exemplo Prático
Sistema Bancário: Verificando se o usuário possui saldo
Exemplo Prático
Sistema Bancário: Verificar se o usuário possui permissão
para realizar a transação
Exemplo Prático
Sistema Bancário: Verificar se o dinheiro é negativo
Exemplo Prático
Sistema Bancário: Prevenindo a perda de dados
Resultado
O código perdeu elegância
O código perdeu simplicidade
O código da regra do negócio foi voltado para outros
objetivos (misturado)
Código redundante
Código de difícil manutenção
Código de difícil compreensão
Código de difícil reutilização
Crosscutting Concern
Logging, segurança, tratamento de erros, persistência de dados ou autenticação, entre outros.
A Programação Orientada a Aspectos surge com uma boa proposta para solucionar esse problema, através do encapsulamento dos crosscutting concern em módulos separados do restante do código.
Aspecto
O que é
Estas propriedades são expressas através de fragmentos
de código espalhados por diversos componentes do sistema. Aspecto
Algumas propriedades que normalmente são vistas como
aspectos:
tratamento de exceções,
coordenação de múltiplos objetos,
segurança,
visualização,
logging,
tracing,
tolerância à falhas.
Aspecto
Aspecto
Aspecto
Hello World public class Hello { public void sayHello(){
System.out.print("Hello");
}
}
Impresso na tela:
Hello
Hello World public aspect AspectHello { pointcut world(): execution (public void
Hello.sayHello());
after() returning: world() {
System.out.println(" World");
}