Exercícios de AspectJ com Eclipse™
- Ainda utilizando o projeto de aplicação bancária, vamos escrever um
aspecto para checar propriedades sobre a nossa aplicação.
- defina um aspecto chamado ValidaSistema que deve verificar se algum
atributo privado é alterado fora do método set para o mesmo. Caso positivo
um warning
deve ser informado em tempo de compilação.
- adicione o aspecto na lista de arquivos, gere a nova versão do
sistema e observe se em algum ponto da aplicação a propriedade é
violada.
- Provavelmente um dos pontos do sistema em que a propriedade é
violada é no construtor das classes. Como o padrão de codificação sugere
este tipo de programação, altere o aspecto definido para desconsiderar
atribuições a atributos privados dentro do construtor da classe. Gere a
aplicação e observe os warnings.
- Mais uma vez refina o aspecto para não levar em conta métodos da
interface negócio-dados (RepositorioContas), uma vez que suas
implementações (RepositorioContasArray e RepositorioContasLista)
manipulam os atributos nos seus métodos. Gere novamente a
aplicação. Observe que apenas métodos da classe Conta ferem a
propriedade. Modifique-os para alterar o atributo saldo através de um
método set, porém privado. Gere a aplicação e observe que não
há mais warnings.
- Agora vamos definir um aspecto para checar uma pre-condição.
- defina um aspecto para levantar a exceção IllegalArgumentException
caso algum método seja chamado tendo uma referência não válida (null)
em qualquer parte da aplicação.
- comente a linha 10 da classe Banco, adicione o aspecto na lista de
arquivos, gere e execute uma nova versão do sistema.
- observe a quantidade de classes que o seu aspecto afeta.
- Outra precondição que pode ser checada é se após a realização de um
crédito o valor creditado foi somado ao saldo.