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

Langage Java Discussion :

envoyer un evenement à des classes qui "écoutent"


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 70
    Par défaut envoyer un evenement à des classes qui "écoutent"
    Bonsoir à tous

    j'ai parcouru le forum et meme essayé de comprendre ce tuto que je trouve un peu compliqué à mettre en oeuvre

    en fait je veux créer une classe "mère" (principale) et plusieurs classes "filles" (classes déclarées au sein de la classe "mère")

    la classe "mère" écoute les classes filles

    genre (c'est le principe la syntaxe est surement fausse ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    FILLE fille1 = new FILLE("un");
    mere.addListener(fille1);
    FILLE fille2 = new FILLE("deux");
    mere.addListener(fille2);
    FILLE fille3 = new FILLE("trois");
    mere.addListener(fille3);
    / ... /
    public void captureEvent( Event e)
    {
     // on gere l'evenement
    }
    et dans les classes "filles" on declenche un evenement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (valeur > 99) Emit(Event);
    la classe "mere" récupère cet evenement, une valeur, nom de classe et traite cet evenement ..

    est-possible facilement ?

    cette methode pourrait par exemple etre utilisée sur une classe Color et declencher un evenement suite à un "setColor( couleur);

    j'espere avoir été clair

  2. #2
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 144
    Par défaut
    bonsoir ,
    Pour la propagation d'evenements tu as besoin de :
    - la classe source de l'evenement : pour toi la classe Fille.
    - la classe qui est a l 'ecoute de l'evenement(listener) : toi la classe Mere
    - la classe representant l'evenement qui derive de EventObject:
    - d'un interface derivant de EventListener qui possede la declarations de la ou des methodes permettant de traiter l evenement .( ce sont les listeners qui doivent implementer cet interface)
    - d' 1 container qui contiendra les objets listener ( style Vector <TonListener> v ( = mailing list). celui se trouve bien logiquement .... dans la classe qui propage l evenement.
    - il te faut aussi pour etre complet des methode squi permettent d 'ajouter / retirer un objet de la mailing list .

    - il faut aussi une methode qui va appeler la methode commune a tous les objets et transmettre l'evenement en paramettre

    Franchement une fois que tu auras compris comment fonctionne les evenements et leurs propagations tu verras c'est vraiment pas complique a mettre en oeuvre ;-) Courrage

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 70
    Par défaut
    merci pour le résumé

    je vais me replonger dans ce tuto

    de plus en fouillant sur le Web j'ai aperçu la classe Observable

    peut-etre plus adaptée à ce que je veux faire ?

    si quelqu'un a des précisions là-dessus

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2009
    Messages : 112
    Par défaut
    Salut,

    Cette classe n'est pas très difficile à utiliser. Par contre, elle est couplée avec l'interface Observer.

    Le principe en bref, tu crées des classes qui héritent d'Observable (dans ton cas les classe Filles). Tu leur ajoutes un Obserser (ta classe Mere) grâce à la méthode addObserver. Ensuite, tu signales un évènement avec notifyObservers.
    La classe Mere doit implémenter la méthode update de l'interface Observer. C'est cette méthode qui est appélée quand tu exécutes notifyObservers.

    J'espère t'avoir un peu eclairé. Sinon doit y avoir pas mal d'exemples sur le net

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par bigbear19 Voir le message
    Salut,

    Cette classe n'est pas très difficile à utiliser. Par contre, elle est couplée avec l'interface Observer.

    Le principe en bref, tu crées des classes qui héritent d'Observable (dans ton cas les classe Filles). Tu leur ajoutes un Obserser (ta classe Mere) grâce à la méthode addObserver. Ensuite, tu signales un évènement avec notifyObservers.
    La classe Mere doit implémenter la méthode update de l'interface Observer. C'est cette méthode qui est appélée quand tu exécutes notifyObservers.

    J'espère t'avoir un peu eclairé. Sinon doit y avoir pas mal d'exemples sur le net
    Salut,

    Ne serait-ce pas plutôt l'inverse ? La classe mère est observable, et les filles l'observent (implémentent donc l'interface Observer, comme un listener) et sont ajoutéesà la classe étendant la classe Observable.
    Ce qui est présenté dans le tuto de rom, c'est ce que Observable doit implémenter tout simplement

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 144
    Par défaut
    Citation Envoyé par quadra38 Voir le message
    merci pour le résumé

    je vais me replonger dans ce tuto

    de plus en fouillant sur le Web j'ai aperçu la classe Observable

    peut-etre plus adaptée à ce que je veux faire ?

    si quelqu'un a des précisions là-dessus
    la classe Observable est exactement basé sur le principe que je t'ai expliqué .
    Je trouve plus approprié de creeer soit meme sa classe qui represente l'evenement avec l 'interface listener.
    car dans le listener tu declares n'importe quel methode qui te permet de gerer l'evenement recu.
    tout est integralement parametrable quand tu le fais toi meme.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 70
    Par défaut
    merci à tous pour toutes ces précisions

    je vais me pencher là-dessus

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 70
    Par défaut
    j'ai recopié toutes les classes de l'exemple et j'essaye de comprendre en simplifiant un peu tout ça

    il faut quand meme 5 fichiers .java pour faire tourner cet exemple

    donc je vois pour minimiser et comprendre les regles de bases

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. des classes qui se mordent la queue
    Par Michel_57 dans le forum C++
    Réponses: 5
    Dernier message: 26/09/2007, 22h49
  2. Réponses: 2
    Dernier message: 04/01/2007, 16h48
  3. Des classes qui discutent...
    Par comme de bien entendu dans le forum Langage
    Réponses: 4
    Dernier message: 27/03/2006, 17h45

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