Bonjour à toutes et à tous,
Je travail actuellement sur un projet qui demande d'exploiter la programmation orientée aspect dans des retranchement que je ne maîtrise pas... D'où ma demande bouée de sauvetage.
Je vous pose le cadre: j'ai une classe Personne (hô originalité) qui possède 2 attributs : String nom et String prenom.
Et j'ai un constructeur prenant 2 string en paramètre.
Jusque là, tout va bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 public class Personne { private String nom; private String prenom; public String getNom() { return nom; } public void setNom(String nom) { this.nom = nom; } public String getPrenom() { return prenom; } public void setPrenom(String prenom) { this.prenom = prenom; } /** * Constructeur plublic, sans objet banquaire. * @param nom le nom de la personne. * @param prenom le prénom de la personne. */ public Personne(String nom, String prenom){ this.setNom(nom); this.setPrenom(prenom); } }
J'ai créer un aspect Client, qui étant le comportement de Personne pour avoir un attribut supplémentaire. J'ai donc utiliser les déclaration inner-type.
J'aimerais maintenant "ajouter" un constructeur à Personne pour prendre en compte le Point.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public privileged aspect Client { // Déclarations Inter-type private Point Personne.point; // Les getter et setter dessus public Point Personne.getPoint() { return point; } public void Personne.setPoint(Point point) { this.point= point; } // ... }
J'ai fait le pointcut suivant :
Dans le but d’étendre le constructeur de Personne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 /** * Pointcut récupérant le constructueur Personne(String,String) * @param exp */ pointcut personneCreation(Personne pers) : this(pers) && execution(Personne.new(String,String));
Mais ce que je ne sais pas faire, c'est récupérer dans l'advise le paramètre Point qui serait en entrée de l'appel et l'affecter à this.
Quelqu'un pourrait-il m'aider?
Merci beaucoup.
Partager