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 :

[Language]Interaction entre class


Sujet :

Langage Java

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Points : 416
    Points
    416
    Par défaut [Language]Interaction entre class
    Bonjour a tous,
    voila en fait j'ai une application avec trois classe. la premiere VieFenetre est la classe qui représente l'interface graphique de mon application, j'ai ensuite deux classes ViePanneauBouton et ViePanneauMonde, le premier représente la disposition des boutons sur mon interface et la seconde représente une interface de dessin.
    en fait mon problème et que il faut que je récupére dans VieFenetre si un bouton de ViePanneauBouton à été "appuyer" pour dessiner quelque chose dans ViePanneauMonde. Mon problème et que je ne sais pas comment "lier" les classes.
    Merci par avance.
    Bob
    Jérémy
    Ingénieur Conception et Développement

  2. #2
    Membre actif

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Points : 209
    Points
    209
    Par défaut
    hmmm ... je dirais que VieFenetre doit écouter les évènements des boutons de ViePanneauBouton (en s'ajoutant comme ActionListener si c du SWING).

    Lorsqu'un évènement a lieu, VieFenetre en sera informé et pourra effectuer des opérations dans ViePanneauMonde.

    Cela implique que VieFenetre connaisse ViePanneauBouton et ViePanneauMonde.

    Toine

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Points : 416
    Points
    416
    Par défaut
    ok merci, c'est ce que j'essai de faire, mais en fait j'arrive pas à faire un addActionListener sur ma classe ViePanneauBouton (qui dérive de JPanel) !
    Jérémy
    Ingénieur Conception et Développement

  4. #4
    Membre actif

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Points : 209
    Points
    209
    Par défaut
    Non, tu dois le faire sur les boutons eux-même.

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Points : 416
    Points
    416
    Par défaut
    ok je vais donc faire comme cela, donc en fait dans ViePanneauBouton, je met mes boutons en 'public' et dans VieFenetre j'ajoute un écouteur dessus.
    est-ce vraiment propre?
    Jérémy
    Ingénieur Conception et Développement

  6. #6
    Membre actif

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Points : 209
    Points
    209
    Par défaut
    Tu as plusieurs solutions :

    1) les boutons de ViePanneauBouton sont accessibles en public (plutot via des méthodes accesseurs)

    2) tu construis ViePanneauBouton avec VieFenetre et c'est à la charge de ViePanneauBouton d'ajouter les écouteurs sur les boutons.

    3) ViePanneauBouton connait le (ou les) ViePanneauMonde, via une méthode addViePanneauMonde() sur ViePanneauBouton. Et lorsque tu cliques sur les boutons, tu effectues mes opérations de tracés sur le (ou les) ViePanneauMonde.

    Toine

    PS : la 3) est ma préférée

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Points : 416
    Points
    416
    Par défaut
    ok merci beaucoup pour ton aide !
    Jérémy
    Ingénieur Conception et Développement

  8. #8
    Membre actif

    Inscrit en
    Mai 2002
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2002
    Messages : 328
    Points : 209
    Points
    209
    Par défaut
    Je t'en prie, amuse toi bien !

    Toine

    Ne pas oublié le tag

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 109
    Points : 122
    Points
    122
    Par défaut
    Citation Envoyé par LordBob
    ok je vais donc faire comme cela, donc en fait dans ViePanneauBouton, je met mes boutons en 'public' et dans VieFenetre j'ajoute un écouteur dessus.
    est-ce vraiment propre?
    non, ça n'est pas propre d'exposer les boutons avec une visibilité public. tu peux faire en sorte qu'on y accède par des... accesseurs mais ça expose toujours autant les boutons.
    Un autre solution est par exemple de rajouter une/des méthodes addXXXActionListener() à ViePanneauBouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void addXXXActionListener(...) {
    //transmet le listener au bouton concerné
    boutonXXX.addActionListener(...);
    }
    ainsi, tu réduis au minimum l'interaction entre VieFenetre et l'implémentation de ViePanneauBouton

  10. #10
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Essaie plutot de te definir ton propre type de listener MyListener ou carrement d'utiliser un PropertyChangeListener (voir package java.beans voir egalement la classe PropertyChangeSupport qui contient toute la logique necessaire a la propagation des proprietes et a la gestion des listener appropries, t'evitant par la meme a refaire tout toi-meme).

    Dans la pratique ce que tu fais marche tres bien, mais au niveau architecture... ben il n'est peut-etre pas normal de lier formement VieFenetre via un ActionListener qui codera en dur que ce que tu utilises dans le panneau de config ce sont des boutons. Nottement ca bloquera si tu dois fournir un set de controles alternatifs (au pif une table de proprietes) pour un eventuel panneau de controle pour utilisateur avance ou au contraire un interface super-ergonomique pour debutants. Bien sur d'un autre cote l'autre solution est plus rapide a coder surtout pour les petits projets.

    Dans ce genre de cas, quand on a trop de variables pour configurer le rendu ou une operation, ce que je fais :

    - une class DrawingParameters qui sous-classe ou delegue a Map<String, Object> et contient (delegue a) un PropertyChangeSupport avec si besoin des methodes de convenance pour setter/getter chacune proprietes (pratique... mais long a ecrire). Penser a forwarder les PropertyChangeEvent lors de l'appel a la methode de base put(key, value).

    - ViePanneauBouton controle ses propres buttons et modifie le parametre de dessin de maniere appropriee en reaction aux divers clics et choix. Si le parametre de dessin est ammener a etre modifier par ailleurs, alors ViePanneauBouton peut aussi utiliser un PropertyChangeListener pour reagir au changement de l'objet parametre (et modifier l'etat des boutons et des champs en concequence).

    - VieFenetre souscrit uniquement aux proprietes qui l'interessent via addPropertyChangeListenere(property, listener) directement sur l'objet parameter et reagit donc en concequence.

    - Idem pour ViePanneauMonde si tu veux un acces direct a l'objet parametre ; sinon VieFenetre peut lui transmettre les changements/ordonner le re-rendu de la vue.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  11. #11
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Points : 416
    Points
    416
    Par défaut
    ok merci a vous pour tout vos conseils !
    Jérémy
    Ingénieur Conception et Développement

Discussions similaires

  1. Interaction entre classes. Utilisation du "self"
    Par santaflam dans le forum Général Python
    Réponses: 11
    Dernier message: 01/09/2013, 00h11
  2. interaction entre classes
    Par BahCmoa dans le forum Langage
    Réponses: 2
    Dernier message: 04/02/2013, 13h34
  3. Interactions entre les classes ?
    Par bigwade dans le forum Android
    Réponses: 8
    Dernier message: 08/12/2012, 14h24
  4. [Débutant] Interactions entre classes
    Par ledany dans le forum ASP.NET
    Réponses: 3
    Dernier message: 09/11/2011, 10h27
  5. [MySQL] POO - interaction entre les classes (tuto PHPUnit)
    Par hornetbzz dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 01/02/2010, 10h30

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