SlideShare une entreprise Scribd logo
1  sur  12
Télécharger pour lire hors ligne
Exposé :Aspectj
Université Mohamed Chérif Messadia
‫ــ‬ Souk-Ahras ‫ــ‬
Réalisé par:
Daoudi Ilhem
Plan:
1-Introduction.
2-Définition.
3-Implémentation d’un aspect .
4-Les Coupes .
5-Code Advice.
6-Conclustion.
7-Références.
1-Introduction:
• Programmation Oriente Aspect
implique briser la logique du
programme en parties
distinctes appelées soi-disant
préoccupations .
• Voyons dans cet exposé
comment l’outil Aspecj peut
gérer les aspects transversaux
d'une application .
2-Définition:
• Aspectj est une extension orientée aspect, créée pour le langage de
programmation java.
• Aspectj est devenu le standard, du fait de son utilisation répandue,
pour la programmation orientée aspect en mettant l'accent sur la
simplicité et la facilité de mise en œuvre pour les utilisateurs finaux.
• Aspectj se base sur la syntaxe du langage java et s'intègre
aux ide pour afficher sa structure transversale depuis sa première
publication en 2001.
• Télécharger la distribution aspectj de : www.Eclipse.Org/aspectj .
3-Implémentation d’un aspect:
• Définir un nouvel aspect est très semblable à créer une nouvelle classe. Le mot-clef
class est juste remplacé par aspect. Dans un aspect nous allons pouvoir définir des
coupes et des codes advice qui induiront les fonctionnalités liées à cet aspect
Exemple 1:
public aspect HelloWorld {
// Coupe :
pointcut mainCall () :
call ( public static void main( String[] args ) );
// Code Advice :
before () : mainCall() {
System.out.println ("Hello world!");
}
}
3-Implémentation d’un aspect :
public class MainHelloWord {
// Point de jonction ( joinpoint ) :
public static void main (String[] args) {
}
}
Au moment de la compilation, le tisseur
d'aspects ajoutera le comportement défini
dans le code advice HelloWorld.aj au
moment de l'appel de la méthode main.
4-LES COUPES :
• Une coupe permet de regrouper un ou plusieurs points de jonction.
• Selon le type de point de jonction, le mot clé à utiliser pour définir la coupe est
différent. La syntaxe est résumée dans le tableau suivant :
Syntaxe Description du point de jonction
call(methodeExpression) Appel d'une méthode
execution(methodeExpression) Exécution d'une méthode
get(attributExpression) Lecture d'un attribut
Exemple :
get (int Point.x)
set(attributExpression) Ecriture d'un attribut
Syntaxe Description du point de jonction
handler(exceptionExpression) Exécution d'un bloc de récupération d'une
exception (catch) dont le nom vérifie
Exemple :
handler(IOException+)
initialization(constanteExpression) Exécution d'un constructeur de classe dont le
nom vérifie constanteExpression
Exemple :
initialization(Customer.new(..))
preinitialization(constanteExpression) Exécution d'un constructeur hérité
staticinitialization(classeExpression) Exécution d'un bloc de code static dans une
classe
Exemple :
staticinitialization(Point)
adviceexecution() Exécution d'un code advice
5-CODE ADVICE :
• Une fois la coupe définie, il faut écrire le code à exécuter au moment où
l'événement décrit par la coupe est levé. Avant d'écrire ce code advice, il faut
décider à quel moment exécuter le code : avant l'événement, après ou autour
de l'événement.
• before permet d'exécuter du code avant d'entrer dans le code lié à
l'événement.
• after permet quant à lui d'exécuter du code après l'événement.
• around permet soit de remplacer l'événement en lui-même, soit d'exécuter du
code avant et après le point de jonction.
• Pour exécuter le code de l'événement il faut utiliser proceed à l'intérieur du
code advice. Si la méthode a un type de retour, alors il faut faire précéder le
mot-clef around de Object. L'appel à proceed renvoie alors un type Object qu'il
est possible de récupérer pour le renvoyer.
5-CODE ADVICE :
• Voici un exemple très simple permettant de tracer l'exécution de la méthode getX.
pointcut getXValue(): execution(int *..Point.getX());
Object around() : getXValue()
{
System.out.println("=> Entrée dans getX");
Object ret = proceed();
System.out.println("<= Sortie de la méthode getX");
return ret;
}
6-CONCLUSTION :
• Les langages orientés aspect, et plus particulièrement AspectJ,
commencent à être utilisés de plus en plus. Certains
programmeurs intègrent cette nouvelle méthode dans leur
processus de développement à des fins de tests internes,
débugage, traçage d'information, et d'autres l'utilisent déjà pour
développer des applications complètes.
7-RÉFÉRENCES :
• http://ewawszczyk.developpez.com/tutoriel/java/spring/aop/
• https://en.wikipedia.org/wiki/AspectJ
• http://www.cin.ufpe.br/~in0980/bib/JanofskyAspectJTutorial.html
• https://www.eformation.uha.fr/moodle/pluginfile.php/50303/mod_resource/content
/0/references/XPOSE_ASPECTJ3_LEVY_SOPHIE.pdf

Contenu connexe

En vedette

Jamie Larue 4.08
Jamie Larue 4.08Jamie Larue 4.08
Jamie Larue 4.08guest540cbd
 
Inventaire de foresterie urbaine - Ville de Repentigny - Géomatique 2013
Inventaire de foresterie urbaine - Ville de Repentigny - Géomatique 2013Inventaire de foresterie urbaine - Ville de Repentigny - Géomatique 2013
Inventaire de foresterie urbaine - Ville de Repentigny - Géomatique 2013Patrice Pitre
 
Estas son nuestras obras de arte
Estas son nuestras obras de arteEstas son nuestras obras de arte
Estas son nuestras obras de arteEli Mar Jiménez
 
El arte llego a la escuela
El arte llego a la escuelaEl arte llego a la escuela
El arte llego a la escuelaEli Mar Jiménez
 
grafico en matlab
grafico en matlabgrafico en matlab
grafico en matlabximenacoral
 
Presentacion del parcial
Presentacion del parcialPresentacion del parcial
Presentacion del parcialpxndita
 
Ces maria de los angeles emporderamiento
Ces maria de los angeles emporderamientoCes maria de los angeles emporderamiento
Ces maria de los angeles emporderamientoValores Santos
 
Si tienes una idea empréndela, y verás...
Si tienes una idea empréndela, y verás...Si tienes una idea empréndela, y verás...
Si tienes una idea empréndela, y verás...Sergio Montoro Ten
 
Manger la nature - victoire
Manger la nature - victoireManger la nature - victoire
Manger la nature - victoireValérie Nimal
 
Esquema general
Esquema generalEsquema general
Esquema generaltxemauri
 
Mapa de lluvia Cabildo GC 15marzo2011
Mapa de lluvia Cabildo GC 15marzo2011Mapa de lluvia Cabildo GC 15marzo2011
Mapa de lluvia Cabildo GC 15marzo2011CcVilla de Moya
 

En vedette (20)

una nueva misión
una nueva misiónuna nueva misión
una nueva misión
 
Cono
ConoCono
Cono
 
Espol
EspolEspol
Espol
 
Jamie Larue 4.08
Jamie Larue 4.08Jamie Larue 4.08
Jamie Larue 4.08
 
Reebok on line
Reebok on lineReebok on line
Reebok on line
 
Inventaire de foresterie urbaine - Ville de Repentigny - Géomatique 2013
Inventaire de foresterie urbaine - Ville de Repentigny - Géomatique 2013Inventaire de foresterie urbaine - Ville de Repentigny - Géomatique 2013
Inventaire de foresterie urbaine - Ville de Repentigny - Géomatique 2013
 
Estas son nuestras obras de arte
Estas son nuestras obras de arteEstas son nuestras obras de arte
Estas son nuestras obras de arte
 
El arte llego a la escuela
El arte llego a la escuelaEl arte llego a la escuela
El arte llego a la escuela
 
grafico en matlab
grafico en matlabgrafico en matlab
grafico en matlab
 
Presentacion del parcial
Presentacion del parcialPresentacion del parcial
Presentacion del parcial
 
Anitapaute
AnitapauteAnitapaute
Anitapaute
 
Derechos humanos y de la naturaleza
Derechos humanos y de la naturalezaDerechos humanos y de la naturaleza
Derechos humanos y de la naturaleza
 
powerpoint
powerpointpowerpoint
powerpoint
 
Ces maria de los angeles emporderamiento
Ces maria de los angeles emporderamientoCes maria de los angeles emporderamiento
Ces maria de los angeles emporderamiento
 
Si tienes una idea empréndela, y verás...
Si tienes una idea empréndela, y verás...Si tienes una idea empréndela, y verás...
Si tienes una idea empréndela, y verás...
 
Manger la nature - victoire
Manger la nature - victoireManger la nature - victoire
Manger la nature - victoire
 
Esquema general
Esquema generalEsquema general
Esquema general
 
Escopolamina
EscopolaminaEscopolamina
Escopolamina
 
Trabajo de sistemas
Trabajo de sistemasTrabajo de sistemas
Trabajo de sistemas
 
Mapa de lluvia Cabildo GC 15marzo2011
Mapa de lluvia Cabildo GC 15marzo2011Mapa de lluvia Cabildo GC 15marzo2011
Mapa de lluvia Cabildo GC 15marzo2011
 

Similaire à Aspectj

AOP.pptx
AOP.pptxAOP.pptx
AOP.pptxManalAg
 
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !Paris Salesforce Developer Group
 
Aspect avec AspectJ
Aspect avec AspectJAspect avec AspectJ
Aspect avec AspectJsimeon
 
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniterAtsé François-Xavier KOBON
 
Présentation PFE Module Article GPAO
Présentation PFE Module Article GPAOPrésentation PFE Module Article GPAO
Présentation PFE Module Article GPAOahmedmiha
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logiciellecyrilgandon
 
Design Pattern introduction
Design Pattern introductionDesign Pattern introduction
Design Pattern introductionneuros
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Martin Latrille
 
Web-In 2010: Programmation Native iOS (French)
Web-In 2010: Programmation Native iOS (French)Web-In 2010: Programmation Native iOS (French)
Web-In 2010: Programmation Native iOS (French)Fred Brunel
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonyVincent Composieux
 
Node.js, le pavé dans la mare
Node.js, le pavé dans la mareNode.js, le pavé dans la mare
Node.js, le pavé dans la mareValtech
 
Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Farouk Mezghich
 

Similaire à Aspectj (20)

AOP.pptx
AOP.pptxAOP.pptx
AOP.pptx
 
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
 
sfPot aop
sfPot aopsfPot aop
sfPot aop
 
Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)
 
Aspect avec AspectJ
Aspect avec AspectJAspect avec AspectJ
Aspect avec AspectJ
 
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
 
Présentation PFE Module Article GPAO
Présentation PFE Module Article GPAOPrésentation PFE Module Article GPAO
Présentation PFE Module Article GPAO
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
 
Apple : iOS
Apple : iOSApple : iOS
Apple : iOS
 
Introduction à node.js
Introduction à node.js Introduction à node.js
Introduction à node.js
 
Design Pattern introduction
Design Pattern introductionDesign Pattern introduction
Design Pattern introduction
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)
 
Web-In 2010: Programmation Native iOS (French)
Web-In 2010: Programmation Native iOS (French)Web-In 2010: Programmation Native iOS (French)
Web-In 2010: Programmation Native iOS (French)
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs Symfony
 
Node.js, le pavé dans la mare
Node.js, le pavé dans la mareNode.js, le pavé dans la mare
Node.js, le pavé dans la mare
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
Angular.pdf
Angular.pdfAngular.pdf
Angular.pdf
 
Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)
 

Aspectj

  • 1. Exposé :Aspectj Université Mohamed Chérif Messadia ‫ــ‬ Souk-Ahras ‫ــ‬ Réalisé par: Daoudi Ilhem
  • 2. Plan: 1-Introduction. 2-Définition. 3-Implémentation d’un aspect . 4-Les Coupes . 5-Code Advice. 6-Conclustion. 7-Références.
  • 3. 1-Introduction: • Programmation Oriente Aspect implique briser la logique du programme en parties distinctes appelées soi-disant préoccupations . • Voyons dans cet exposé comment l’outil Aspecj peut gérer les aspects transversaux d'une application .
  • 4. 2-Définition: • Aspectj est une extension orientée aspect, créée pour le langage de programmation java. • Aspectj est devenu le standard, du fait de son utilisation répandue, pour la programmation orientée aspect en mettant l'accent sur la simplicité et la facilité de mise en œuvre pour les utilisateurs finaux. • Aspectj se base sur la syntaxe du langage java et s'intègre aux ide pour afficher sa structure transversale depuis sa première publication en 2001. • Télécharger la distribution aspectj de : www.Eclipse.Org/aspectj .
  • 5. 3-Implémentation d’un aspect: • Définir un nouvel aspect est très semblable à créer une nouvelle classe. Le mot-clef class est juste remplacé par aspect. Dans un aspect nous allons pouvoir définir des coupes et des codes advice qui induiront les fonctionnalités liées à cet aspect Exemple 1: public aspect HelloWorld { // Coupe : pointcut mainCall () : call ( public static void main( String[] args ) ); // Code Advice : before () : mainCall() { System.out.println ("Hello world!"); } }
  • 6. 3-Implémentation d’un aspect : public class MainHelloWord { // Point de jonction ( joinpoint ) : public static void main (String[] args) { } } Au moment de la compilation, le tisseur d'aspects ajoutera le comportement défini dans le code advice HelloWorld.aj au moment de l'appel de la méthode main.
  • 7. 4-LES COUPES : • Une coupe permet de regrouper un ou plusieurs points de jonction. • Selon le type de point de jonction, le mot clé à utiliser pour définir la coupe est différent. La syntaxe est résumée dans le tableau suivant : Syntaxe Description du point de jonction call(methodeExpression) Appel d'une méthode execution(methodeExpression) Exécution d'une méthode get(attributExpression) Lecture d'un attribut Exemple : get (int Point.x) set(attributExpression) Ecriture d'un attribut
  • 8. Syntaxe Description du point de jonction handler(exceptionExpression) Exécution d'un bloc de récupération d'une exception (catch) dont le nom vérifie Exemple : handler(IOException+) initialization(constanteExpression) Exécution d'un constructeur de classe dont le nom vérifie constanteExpression Exemple : initialization(Customer.new(..)) preinitialization(constanteExpression) Exécution d'un constructeur hérité staticinitialization(classeExpression) Exécution d'un bloc de code static dans une classe Exemple : staticinitialization(Point) adviceexecution() Exécution d'un code advice
  • 9. 5-CODE ADVICE : • Une fois la coupe définie, il faut écrire le code à exécuter au moment où l'événement décrit par la coupe est levé. Avant d'écrire ce code advice, il faut décider à quel moment exécuter le code : avant l'événement, après ou autour de l'événement. • before permet d'exécuter du code avant d'entrer dans le code lié à l'événement. • after permet quant à lui d'exécuter du code après l'événement. • around permet soit de remplacer l'événement en lui-même, soit d'exécuter du code avant et après le point de jonction. • Pour exécuter le code de l'événement il faut utiliser proceed à l'intérieur du code advice. Si la méthode a un type de retour, alors il faut faire précéder le mot-clef around de Object. L'appel à proceed renvoie alors un type Object qu'il est possible de récupérer pour le renvoyer.
  • 10. 5-CODE ADVICE : • Voici un exemple très simple permettant de tracer l'exécution de la méthode getX. pointcut getXValue(): execution(int *..Point.getX()); Object around() : getXValue() { System.out.println("=> Entrée dans getX"); Object ret = proceed(); System.out.println("<= Sortie de la méthode getX"); return ret; }
  • 11. 6-CONCLUSTION : • Les langages orientés aspect, et plus particulièrement AspectJ, commencent à être utilisés de plus en plus. Certains programmeurs intègrent cette nouvelle méthode dans leur processus de développement à des fins de tests internes, débugage, traçage d'information, et d'autres l'utilisent déjà pour développer des applications complètes.
  • 12. 7-RÉFÉRENCES : • http://ewawszczyk.developpez.com/tutoriel/java/spring/aop/ • https://en.wikipedia.org/wiki/AspectJ • http://www.cin.ufpe.br/~in0980/bib/JanofskyAspectJTutorial.html • https://www.eformation.uha.fr/moodle/pluginfile.php/50303/mod_resource/content /0/references/XPOSE_ASPECTJ3_LEVY_SOPHIE.pdf