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

avec Java Discussion :

gestion des interfaces


Sujet :

avec Java

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    988
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 988
    Par défaut gestion des interfaces
    Bonsoir,

    Normalement en java dès qu'une classe implémente une interface, elle doit redéfinir toutes les méthodes de l'interface, sous peine de devenir classe abstraite.
    Je ne comprends pas pourquoi, parfois, je vois, dans une classe qui implémente le listener MouseListener, toutes les méthodes du listener MouseListener sont bien importées mais seulement une partie des méthodes est implementée.
    La classe ne devient elle pas de ce fait classe abstraite??

    Merci de votre aide.

    Cordialement.

    Nathalie

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par harbonne Voir le message
    toutes les méthodes du listener MouseListener sont bien importées mais seulement une partie des méthodes est implementée
    Que veux-tu dire "importées" précisément ?

    a++

  3. #3
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Je pense qu'il doit vouloir dire qu'elles sont bien présentes dans la classe mais qu'elles ont un corps vide.


    En fait, concernant l'interface MouseListener, celle-ci défini un certain nombre de méthodes dans son contrat permettant de gérer à peu prêt tous les cas d'utilisation de la souris (bouton cliqué, bouton pressé etc...) cependant, si l'on a pas besoin de gérer tous ces comportements alors on peut laisser les corps de méthode vides, les règles du implements imposant d'écrire le nom de toutes les méthodes d'une interface dans la classe qui l'implémente.

    C'est pour cette raison que les concepteurs de l'API Java ont conçu les Adapters.

    Un Adapter est une classe qui implémente une interface donnée en founissant une implémentation par défaut (corps vide) à toutes ses méthodes, ceci dans le but d'être héritée par des classes qui ont besoin d'implémenter une interface mais qui n'ont pas besoin de toutes ses méthodes, cela leur permet justement d'éviter de devoir recopier le nom de toutes les méthodes inutilisées de l'interface.

    Par exemple dans le cas du MouseListener on a la classe MouseAdapter.

    Si ta classe a besoin de gérer les événement souris mais n'en gère pas tous les aspects, alors tu peux faire hériter ta classe de MouseAdapter plutôt que d'implémenter l'interface MouseListener et ainsi redéfinir uniquement les méthodes qui t'intéressent. Cela est valable, bien entendu, si ta classe n'hérite pas déjà d'une autre.


  4. #4
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut
    exact je complete juste l'explication relativement complete de deadpool par un petit exemple, imagine que tu ai un objet sur sur ton interface et que tu désire qu'un clic sur cet objet entraine une action mais que seul un clic puisse le faire . il tre suffit juste d'implementer mousePressed().. concretement toutes les autres méthode ne doivent rien faire, donc tu les laisse vides d'instructions.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    988
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 988
    Par défaut [resolu]gestion des interfaces
    Meci beaucoup à vous; c'est très clair; je pense que la création d'un mouseAdapter est en effet idéale.

    Juste une question: lorsqu'on définit une interface en java , s'agit il uniquement d'une sorte de classe abstraite qui comporte des méthodes à implémenter ou peut inclure dans cette définition également des variables ( et pas seulement des méthodes).

    Merci à vous de votre aide.

    Cordialement.

    Nathalie

  6. #6
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Il est impossible de définir des attributs dans une interface, on n'y met uniquement des méthodes que chaque classe devra implémenter.

    Si tu veux ajouter des attributs, tu peux utiliser une classe abstraite.

  7. #7
    Membre émérite Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    précisions finales :

    Les classes abstraites

    Une classe abstraite est une classe dont toutes les méthodes n’ont pas été implémentées. Elle n’est donc pas instanciable, mais sert avant tout à factoriser du code. Une classe qui hérite d’une classe abstraite doit obligatoirement implémenter les méthodes manquantes (qui ont été elles-mêmes déclarées « abstraites » dans la classe parente). En revanche, elle n’est pas obligée de réimplémenter les méthodes déjà implémentées dans la classe parente (d’où une maintenance du code plus facile).

    Les interfaces

    Une interface est un peu comme une classe abstraite dans laquelle aucune méthode ne serait implémentée : les méthodes y sont seulement déclarées. Cela permet de définir un ensemble de services visibles depuis l’extérieur (l’API : Application Programming Interface), sans se préoccuper de la façon dont ces services seront réellement implémentés. Une classe qui implémente une interface doit obligatoirement implémenter chacune des méthodes déclarées dans l’interface, à moins qu’elle ne soit elle-même déclarée... abstraite !

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/03/2015, 20h52
  2. Découvrez la nouvelle gestion des interfaces utilisateurs dans Unity 4.6 : les boutons
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 22/02/2015, 20h03
  3. Découvrez Unity 4.6 et sa nouvelle gestion des interfaces utilisateurs
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 15/02/2015, 22h33
  4. gestion des interfaces graphiques sous R
    Par fabricen26 dans le forum R
    Réponses: 3
    Dernier message: 18/06/2013, 10h40
  5. probleme de gestion des interfaces
    Par hawat23 dans le forum SpagoBI
    Réponses: 3
    Dernier message: 14/11/2007, 13h33

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