IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres Java Discussion :

[AspectJ] Extension par un nouveau constructeur


Sujet :

Autres Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 22
    Points : 38
    Points
    38
    Par défaut [AspectJ] Extension par un nouveau constructeur
    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.

    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);
    	}
    }
    Jusque là, tout va bien.

    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.

    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'aimerais maintenant "ajouter" un constructeur à Personne pour prendre en compte le Point.

    J'ai fait le pointcut suivant :

    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));
    Dans le but d’étendre le constructeur de Personne.

    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.
    ---===ooo0ooo===---
    A.C.A.S.A.N.V.A.

  2. #2
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Tu n'as pas de constructeur qui prend un point en paramètre ... Tu ne pourras donc pas tisser quoique ce soit ...
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 22
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Nemek Voir le message
    Tu n'as pas de constructeur qui prend un point en paramètre ... Tu ne pourras donc pas tisser quoique ce soit ...
    Merci de ta réponse.

    En effet, le constructeur utilisant le point n'a de raison d'exister que si l'aspect Client est utilisé.

    Dans l'architecture que l'on m'impose, on veut pouvoir changer l'aspect Client, sans toucher à Personne. Or je ne peux prédire les comportements que pourra avoir les différents aspect "Client". Je ne le saurait que lorsque ceux-ci seront spécifié mais je ne pourrais plus toucher à Personne, juste changer le fichier .aj.

    Très bonne après-midi.
    ---===ooo0ooo===---
    A.C.A.S.A.N.V.A.

Discussions similaires

  1. Extension par défaut d'un fichier généré par un spool
    Par lcloatre dans le forum Sql*Plus
    Réponses: 1
    Dernier message: 10/10/2007, 15h30
  2. 'Caption' par défaut - Nouveau composant
    Par Alchemist dans le forum Delphi
    Réponses: 5
    Dernier message: 03/02/2007, 10h32
  3. SavePictureDialog et Extension (par défaut)
    Par ero-sennin dans le forum Delphi
    Réponses: 2
    Dernier message: 25/08/2006, 18h44
  4. Réponses: 11
    Dernier message: 25/08/2006, 16h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo