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 :

Notion de polymorphisme


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 59
    Points : 34
    Points
    34
    Par défaut Notion de polymorphisme
    Bonsoir,
    Je suis maintenant confronter au notion de Polymorphisme.
    je veux comprendre c'est quoi le polymorphisme: est-il:
    *donner les mêmes attributs à plusieurs classes
    *donner le même nom à différentes fonctions dans différents classes
    *choisir la fonction à exécuter en fonction de la classe de l’objet
    Merci de me clarifier la notion
    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Points : 446
    Points
    446
    Par défaut
    Je ne dirai pas mieux que ça
    Il est agréable d'avoir le choix. La difficulté est alors de faire le bon (ou le moins pire).

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    le polymorphisme c'est tout à la fois

  4. #4
    Nouveau membre du Club
    Inscrit en
    Février 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 59
    Points : 34
    Points
    34
    Par défaut
    Bonjour,
    A ma connaissance,le polymorphisme concerne les méthodes des objets et non les classes DONC "*donner les mêmes attributs à plusieurs classes" est à éliminer.
    la deuxième "donner le même nom à différentes fonctions dans différents classes"est juste.C le polymorphisme adhoc
    Je reste hésiter dans le 3ème proposition

    Merci de commenter mon raisonnonement

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ben déjà les objets n'ont pas de méthode. Les objets sont des instances de classe, et ils n'ont que les méthodes définies par leur classe. Autrement dit, ce sont les classes, qui ont des méthodes. Conclusion, ce qui concerne les méthodes concerne forcément les classes.

    Bon, sinon :

    *donner les mêmes attributs à plusieurs classes
    Clairement pas. En tout cas pas en Java, ni dans aucun langage de classes que je connais.

    *donner le même nom à différentes fonctions dans différents classes
    Ça c'est ce qu'on appelle la surcharge, qui n'a rien à voir avec le polymorphisme.
    C'est juste une commodité d'écriture.

    *choisir la fonction à exécuter en fonction de la classe de l’objet
    On s'en rapproche... C'est une définition assez large du polymorphisme quel que soit le langage.

    En Java, on dirait plutôt que lors d'un appel de méthode sur un objet, la méthode exécutée est celle implémentée par la classe réelle de cet objet, et pas celle du type déclaré.
    (Le type déclaré étant d'ailleurs assez souvent une interface ou classe abstraite, qui déclare ces méthodes mais ne les implémente pas.)

    Grosso-modo, le polymorphisme en Java et dans les langages de classes, c'est les conséquences de ça.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Points : 446
    Points
    446
    Par défaut
    Prenons un cas simple avec des formes.
    Disons que tu as l'interface suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public interface Forme {
      double getSurface();
      double getPerimetre();
    }
    Avec 2 classes qui implémentent cette interface:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public classe Cercle {
      ...
      public double getSurface() {...}
      public double getPerimetre() {...}
      ...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public classe Rectangle {
      ...
      public double getSurface() {...}
      public double getPerimetre() {...}
      public double getLargeur() {...}
      ...
    }
    Enfin, tu as un programme qui manipule des Formes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void manipulerForme(Forme... formes) {
      for(Forme forme : formes){
         System.out.println("Surface="+forme.getSurface());
         ...
      }
    }
    Ton code manipule des Formes sans connaitre leur implémentation concrète.

    C'est ça le polymorphisme
    Il est agréable d'avoir le choix. La difficulté est alors de faire le bon (ou le moins pire).

  7. #7
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Pour être exact, il y a trois types de polymorphisme différents supportés par Java, englobé indifféremment sous le terme générique de "polymorphisme" : voilà pourquoi les gens ne s'entendent pas entre eux, et pourquoi les débutants rament.
    Bien souvent, c'est le polymorphisme qui découle de la redéfinition de méthode qui est sous-entendu dans les conversations...

    A+
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

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

Discussions similaires

  1. Réponses: 36
    Dernier message: 09/09/2006, 03h06
  2. Réponses: 2
    Dernier message: 25/07/2004, 23h24
  3. Notion de boucles dans Business Object
    Par lionelEIGIP dans le forum Deski
    Réponses: 1
    Dernier message: 08/04/2004, 11h26
  4. Notion sur Socket UDP
    Par oxor3 dans le forum Développement
    Réponses: 3
    Dernier message: 05/04/2004, 00h19
  5. Notion d'algorithme
    Par gtr dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 10/12/2002, 11h46

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