Exercício 2

  1. Usando o mesmo projeto criado no exercício anterior vamos definir um exemplo que usa uma hierarquia de aspectos, favorecendo o reuso de aspectos.
    • crie o aspecto abstrato AbstractLogging e defina no mesmo:
      • um pointcut abstrato loggedMethods
      • dois advice que imprimem o valor da variável thisJoinPoint (contem informação sobre o join point corrente) antes e depois do pointcut loggedMethods
      • note que este aspecto define apenas qual o comportamento associado a logar join points, sem defini-los, o que deverá ser feito por um subaspecto
    • crie agora o aspecto BancoLogging que herda de AbstractLogging e define o pointcut loggedMethods identificando chamadas a métodos de classes dos pacotes  contasfachada, e gui.
      • note que este aspecto apenas define que join points devem ser logados
    • com essa estrutura podemos definir outros subaspectos abstratos de AbstractLogging para logar outros join points de outro sistema.
  2. Para verificar de maneira mais fácil que classes um aspecto afeta selecione o mesmo, vá na janela Cross References e clique nos símbolos + de modo a verificar que métodos de que classes o aspecto afeta.
  3. Note que o caminho contrário também pode ser feito, caso selecionemos uma classe e na janela Cross References cliquemos no + para descobrir que aspecto afeta que métodos da classe.