Les bases de la Programmation Orientée Aspect



Crosscutting

Crosscutting

Nous allons utiliser un premier exemple simple pour mettre en évidence le phénomène de crosscutting. Pour cela, nous allons partir de la situation suivante :

schema1

Nous sommes en présence de deux classes « Line » et « Point » sur lesquelles on peut effectuer des opérations de déplacement dans un plan. Nous souhaitons par ailleurs garder une trace des appels de méthodes et des derniers déplacements d'un objet. On peut clairement voir le phénomène de crosscutting. En effet, nous retrouvons dans nos deux classes des traitements communs qui viennent s'entrelacer au reste des exigences que représentent nos objets.

Le but de la Programmation Orientée Aspect va être de sortir ces deux aspects de l'implémentation de nos classes pour arriver dans la situation suivante :

schema2

Nous avons maintenant deux types d'éléments au sein de notre système :

Un peu de code

Nous allons maintenant visualiser en terme de code les changements que cela apporte. Pour cela, nous allons utiliser AspectJ qui permet de faire de la Programmation Orientée Aspect en Java. Nous reprenons tout d'abord nos deux classes avant la création des deux aspects :

code1

On peut facilement repérer nos deux aspects au sein de nos classes. En bleu nous avons notre système de log utilisant de simple println et en rouge notre MoveTracker qui permet de sauvegarder les derniers déplacements effectués.

Nous allons maintenant créer deux aspects qui permettront d'effectuer les mêmes opérations :

code3

Une fois nos deux aspects créés, nous pouvons nettoyer nos classes principales pour ne garder que le code métier :

code2

Conséquences

Avec ce premier exemple, nous avons pu mettre en évidence le phénomène du crosscutting, mais quels sont les véritables conséquences de ce phénomène :