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 :

[Conception] Méthode avec interface en paramètre


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 40
    Par défaut [Conception] Méthode avec interface en paramètre
    Bonjour,

    Je voudrais connaître l'intérêt et le principe de création et d'utilisation de méthodes qui prennent en paramètre une interface.
    J'ai entendu que ça permettait d'utiliser des méthodes sans en connaître leurs implémentations. Il paraît aussi qu'on utilise bcp les interfaces (notamment les listeners) en paramètre de méthodes lorsqu'on développe des IHM.
    Donc pouvez-vous me donner un ou plusieurs exemples ? Merci.

  2. #2
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    ce que tu as entendu était correct. Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public void traiter(List l){
       ...
    }
    ici on passe une interface en paramètre : List. Cette façon de coder te permet de traiter une liste d'objet, peu importe l'implémentation de cette liste (ArrayList, LinkedList etc.). L'interface list te garanti que les méthodes de base sont implémentées (get(int i), size() etc.).

  3. #3
    Invité
    Invité(e)
    Par défaut
    Autre exemple, Tu peux avoir une interface qui te permet d'accéder à une base de donnée sans savoir à quel type de base tu accedes. L'interet dans ce cas là c'est que tu peux dans l'avenir changer de base de donnée sans changé le code. tu n'as que la classe d'acces à modifier pas ton appli complete.

  4. #4
    Membre expérimenté
    Inscrit en
    Mai 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 335
    Par défaut
    Autre exemple, celui des listener, là c'est toi qui fourni l'implémentation d'une interface pour être rappelé: quand tu implémente ActionListener, et que tu ajoute l'instance de ta classe dans les listeners de l'objet approprié, tu sait que tu va être rappellé sur actionPerformed(ActionEvent e)

    Idem pour Runnable et run() que tu utilise sur new Thread(new MaClassRunnable())

  5. #5
    Membre confirmé Avatar de kerinel
    Profil pro
    Inscrit en
    Février 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 103
    Par défaut
    Les interfaces sont une sorte de "contrat" passé entre le compilateur et la classe qui l'implémente.
    Lorsque tu déclares qu'une classe implémente une interface, tu assures le compilateur que la classe aura toutes les méthodes prévues pour réaliser ce que prévoit l'interface (d'ailleurs si tu le fais pas il te jette ).
    Mais ta classe te permettra aussi de faire d'autre chose. L'interet de l'interface est de ne pas avoir à faire d'heritage multiple. "L'inconvénient" est qu'il te revient d'écrire le corps de la méthode. Mais bon de toute façon c'est bien à toi de décider ce que tu dois faire quand la souris est clickée ou qu'un bouton est activé (par exemple).

    De l'autre coté, lorsque tu déclares que une méthode prend en argument une classe implémentant l'interface, tu assures le compilateur que l'objet que tu passeras en argument sauras répondre à tous les appels de méthodes (mousePressed, mouseClicked.. etc... pour l'interface MouseListener par exemple), et ce indépendamment de ce pourquoi est prévu la classe.

    bon code,
    kerinel

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 40
    Par défaut
    Merci pour ttes vos réponses.
    Je comprend globalement ce que vous affirmez. Seulement, ça serait encore plus clair pour moi si vous pouviez illustrer avec des exemples contenant des bouts de code. Je serai vraiment ravi d'avoir une illustration avec code pour le cas des listeners (cité par deltree) et de l'accès à une base de donnée (cité par gcorbineau).
    Aussi je ne visualise pas bien comment est faite l'organisation des fichiers. Doit-on séparer le fichier f1 contenant l'interface i1 du fichier f2 qui contient la méthode m1 prenant en paramètre cette interface i1. Dans quel fichier sera appelé la méthode m1 et dans quel fichier va-t-on instancier la classe implémentant l'interface i1 ?
    En gros, j'aurai besoin d'un petit exemple.
    Merci bien.

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

Discussions similaires

  1. appel d'une méthode avec plusieurs paramètres
    Par soujava dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 11/05/2008, 23h30
  2. Passage d'une interface en paramètre de méthode COM
    Par sylvain.cool dans le forum C++
    Réponses: 11
    Dernier message: 18/04/2008, 14h15
  3. Réponses: 1
    Dernier message: 28/01/2008, 14h49
  4. appeler une méthode avec paramètre dans une page JSP
    Par javasmif dans le forum Struts 2
    Réponses: 1
    Dernier message: 06/12/2007, 10h48
  5. méthode avec paramètre
    Par MaitrePylos dans le forum Ruby on Rails
    Réponses: 9
    Dernier message: 21/06/2007, 09h26

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