Programação Orientada A Aspecto
A programação orientada a aspectos resolve implementações de interesses transversais(segurança de aceso, acesso concorrente, gerenciamento e etc) para sistemas modelados com orientação a objetos. Também oferece outros aspectos, permitindo modular as propriedades espalhadas no software, sua meta é possibilitar um novo mecanismo para separa-los para que permita a abstração e produza um sistema apto ao que se deseja. O programa é composto pelo processo de montagem, que aplica os aspectos nos componentes, sendo realizado por um combinador
Podemos ter a certeza de que a Orientação a Aspectos nos proporcionou avanços para desenvolver um software, baseando-se em melhorar a compreensão, para facilitar a manutenção e uma possível reutilização, além de modularizar interesses, também diminuiu a quantidade de linhas do programa. Porem, analisando todos os fatos, percebemos que problemas novos não são solucionados, e tem um designer de péssima qualidade. Trabalha apenas em conjunto com Programação Orientada a Objeto, isso conta como uma grande dificuldade.
Exemplo de código e uso, abaixo, utilizando AspectJ: Programa Java:
Import java.util.ArrayList;
Public class main{ Private static ArrayList Estoque = new ArrayList(); Public static void main (String[] args) { //TODO Auto-generated mathod stub If(InicializaEstoque()){ Iterator nter = Estoque.interator(); While(inter.hazNext()){ System.out.println(inter.net());
}
}
}
SuressWarnings(“finally”)
Public static boolean InicializaEstoque(){
Boolean Status = false;
Try{
Estoque.add(“Lapis”);
Estoque.add(“Caderno”);
Status = false;
}finally{
Return Satus;
}
}
}
Aspecto “Debug ()” que será aplicado a nossa aplicação do código anterior:
Public aspect debug{ Pointcut debug(): call (* *.*(..)) && !within(debug);
Before() : debug(){
String nomeMetodo = thisJoinPointStaticPart.getSignature().getName();
System.out.println(“===== Debug AspectJ ====”);
System.out.println(“==== Entrando no método