POA
Un peu de vocabulaire
Il est important pour comprendre les bases de la programmation orientée aspect d'aquérir un peu de vocabulaire. Voici donc quelques expressions fondamentales qui caractérisent bien la POA.
Les points de jonction (joinpoint)
Les points de jonction sont des points du programme autour desquels un ou des aspects ont été greffé. Ils peuvent être de différents type, c'est à dire qu'ils font références à des évènements du programme.
Les évènements autour desquels les aspects peuvent être greffés sont par exemple des appels de méthodes, des appels à un constructeur ou encore les levés d'exceptions. Les plus courant étant les appels de méthodes, elles constituent effectivement les éléments pricipaux de l'execution d'un programme.
Ensuite les points de coupures sur les appels de constructeurs peuvent être utilisé, par exemple, pour modifier le comportement de l'instanciation des objects. Une autre utilitée de ce point de jonction serait de construire rapidement un singleton. L'appel au constructeur étant capturé, nous pouvons modifier celui-ci afin d'éviter plusieurs instanciations.
Pour finir, les points de coupures sur les exceptions peuvent-être utiles pour mettre en place une gestion regroupée de cette ou ces exceptions.
Les points de coupures (pointcut)
Il ne faut pas confondre les points de coupures des points de jonction. Si un point de jonction correspond à point particulier du programme, un point de coupure lui désigne un ensemble de point de jonctions.
Encore une foi, nous pouvons énumérer plusieurs types de points de coupures :
- Les coupes d'appels de méthodes désignant un ensemble d'appels de méthodes.
- Les coupes d'exécution de méthodes désigant l'execution d'une méthode.
- Les coupes de modification de données désigant des instructions d'écritures sur un ensemble d'attributs.
La différence entre les coupes d'éxecution et d'appel de méthodes est le contexte dans lequel sera la programme. Dans le cas de coupe d'appel de méthodes, le contexte sera celui qui a appelé la méthode, et dans le cas de coupe à l'execution le contexte sera celui de la méthode appelée.
Les wilcards
Les wilcards permettent de définir les points de coupures. Elles peuvent être comparées à des expressions réguliaires permettant de caractériser des points du programme.
Nous pouvons par exemple, à l'aide du wilcard get*(..), définir l'ensemble des méthodes du programme commencant par get.
Les codes advices
Les blocs advices sont des blocs de code qu'executera un aspect. Les codes advices que composent un aspect vont caractériser le comportement de celui-ci.
Il faut que chaque code advice d'un aspect doit être associé à une coupe pour être excecuté. Ils ne seront executés que si un évènement définie par un point de coupure à été intercepté.
De plus, il est possible de spécifier à quel moment ces codes advices doivent être executés, c'est à dire avant, pendant ou autour de l'execution de la coupe.