POA

Un exemple simple : le loggeur

Afin de vous donner une meilleur idée des capacitées de la programmation orientée aspect, j'ai créé un loggeur en aspect avec le framework AspectJ. Cet exemple ne représente qu'une partie infime de la puissance de la programmation orientée aspect, mais il montre que nous pouvons appliquer très rapidement un loggeur puissant dans une application, et cela sa modifier son code

Les contraintes de ce loggeur sont :

La classe point

La classe point est un object simple disposant de getter et setter permettant de définir les coordonnées d'un point dans un plan.

point

Le Main

Le main a pour but de créer un objet point, de l'afficher sans faire appel à sa méthode toString(), puis de le déplacer et de l'afficher en appelant explicitement sa méthode toString().

main

Le loggeur

Le loggeur est notre aspect dont sa fonctionnalité est l'affichage des traces. Son objectif est d'afficher tout les appels de méthodes des objects points, avec les contraintes précédement enumérées.

loggeur

La première partie de l'aspect est le point de coupure, nommer logger. Les wilcards mis en place veulent dire :

Ensuite, nous définissons le code advice, avec le mot clef around. Cela veut dire que nous souhaitons tisser l'aspect avant et après les appels de méthodes de la classe Point. L'exucution normal de la méthode sera faite grâce au mot clef proceed(), dont la valeur de retour est la valeur de retour de la méthode capturée.

Le loggeur affichage les évènements sur la sortie standard d'erreur afin de différencier se qu'il affiche du main.

Résultat après lancement

Le résultat est je pense assez impressionnant pour un loggeur codé si rapidement et avec peu de lignes de code. La petite particularitée se trouve au niveau des affichage effectuée dans le main. Effectivement, l'appel à la méthode toString() de la classe Point n'a été détecter que lors d'un appel explicite dans le main.

result

Valid HTML 4.01!