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 :

Communication entre objet


Sujet :

Langage Java

  1. #1
    Membre éprouvé
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Points : 1 166
    Points
    1 166
    Par défaut Communication entre objet
    Bonjour

    Je me demandais comment communique les objets entre eux. Car supposons que le cas suivant :
    - j'ai une classe pour une interface graphique : GUI
    - j'ai une autre classe pour la connexion au serveur : Connexion

    Maintenant, supposons que l'objet de type Connexion écoute le serveur et reçoit un message. Comment afficher le message dans la fenêtre gérée par la classe GUI ?
    Une méthode que je vois c'est d'instancier la classe Connexion dans la classe GUI. Ainsi, une fois un message reçu, je peux accéder facilement aux composants de la fenêtre (attributs de la classe GUI en fait).
    Mais si je ne crée pas d'objet Connexion dans la classe GUI, comment pourrait communiquer les classes entre elles?
    Exemple en code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class GUI 
    {
       JTextArea area; // je veux afficher le texte reçu dedans
     
    /* ... */
     
       void MethodeDeGUI()
       {
           Connexion con = new Connexion(); // objet de la classe Connexion
          con.listen(area); /* methode qui attend un message et si elle reçoit, elle peut
                                    l'afficher dans l'area car il est passé en argument */
        }
    }
    Maintenant, si on ne crée pas l'objet "con" dans la classe même qui contient le JTextArea, comment on ferait pour que la méthode listen() puisse agir sur cet area?
    Je sais, j'ai des questions de débutant mais je le suis en POO et je voudrais faire un programme qui respecte vraiment les règles de la POO. Parce que si c'est juste pour réussir à le faire marcher, c'est facile de contourner. Mais je voudrais bien structurer le tout.
    J'espère que c'est clair.

    Nas'

  2. #2
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 778
    Points
    5 778
    Par défaut
    Il est tout à fait normal que ta classe GUI possède un objet Connexion, par contre le fait que tu passe le JTextArea en paramètre à la méthode listen() n'est pas judicieux.
    En effet, ta classe Connexion doit être indépendante de ta classe GUI (imaginons que tu veuilles la réutiliser pour une application en ligne de commande, tu seras obligé de la modifier).
    Ce qu'il faut c'est que ta classe Connexion ait une méthode qui te renvoie directement le message.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class GUI {
       JTextArea area; // pour afficher le texte reçu
     
    /* ... */
     
       void MethodeDeGUI() {
           Connexion con = new Connexion();
          String message = con.getMessage();  // on récupère le message
          area.setText(message);
        }
    }
    Une autre petite remarque, il serait peut-être interessant que ta classe GUI possède carrément un attribut de type Connexion (cela dépend évidemment de l'utilisation que tu en fait).
    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
    class GUI {
       JTextArea area; // pour afficher le texte reçu
       Connexion con;
     
       public GUI() {
          /*...*/
          con = new Connexion();
       }
     
    /* ... */
     
       void MethodeDeGUI() {
          String message = con.getMessage();  // on récupère le message
           area.setText(message);
        }
    }

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

Discussions similaires

  1. Communication entre objet
    Par Zhitoune dans le forum Débuter
    Réponses: 12
    Dernier message: 05/10/2009, 17h04
  2. Recherche de points communs entre objets
    Par pysnoo dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 24/04/2009, 14h39
  3. Communication entre objets via .NET Remoting
    Par JBidouille dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/05/2007, 22h52
  4. Communication entre objet via "Parent" ?
    Par starkson dans le forum Windows Forms
    Réponses: 11
    Dernier message: 17/02/2007, 18h22
  5. [Observateur] pattern publish/subscribe : communication entre objets
    Par mik-at dans le forum Design Patterns
    Réponses: 6
    Dernier message: 04/09/2006, 13h07

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