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

Java Discussion :

un objet polymorphé


Sujet :

Java

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 117
    Points : 47
    Points
    47
    Par défaut un objet polymorphé
    salut
    selon mes informations ,un objet polymorphé est un objet crée apartir d'une class avec un type d'une autre class(heritage,une class mére et une class fille).
    la question que je voudrais me poser c est quelle est l'utilité de cette tecnique ? aquel situation je vais dire ahh tiens la il faut que je fasse la tecnique de polymorphisme ?
    merci.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 354
    Points : 491
    Points
    491
    Par défaut
    un exemple vaux mieux que de long discourt.

    T'as une classe, décrivant un véhicule, et avec une méthode seDéplace()

    T'as une autre classe, disons voiture, qui hérite de véhicule.

    Imaginons que je me trouve dans un contexte , ou je dois déplacer un véhicule.
    Je sais pas ce que c'est comme véhicule, si c'est un bateau une voiture, ou autre, je sais juste que c'est un véhicule, et qu'il à donc une méthode seDéplace()....
    Maintenant j'appel la méthode seDéplace(). J'ai deux possibilité
    1 - La méthode seDéplace() n'est pas polymorphique, dans ce cas, la méthode définit dans la classe véhicule sera exécute.
    2 - La méthode seDéplace() est polymorphique, et dans ce cas, ca sera la méthode définit dans la classe qui a instancié l'objet qui sera éxécuté. (dans notre exemple si voiture redéfinit seDéplace(), alors ca sera la méthode de voiture qui sera éxecuté, ou une autre méthode si voiture n'hérite pas directement de véhicule et qu'une autre de ses classe mère redéfinisse seDéplace(), par exemple voiture pourrait hérité de véhiculeAMoteur qui rédéfinit seDéplace()....)

    Donc quand est-ce que utilise des méthodes polymorphique ?
    Soit dans notre contexte, on se fiche que l'on déplace une voiture, ou autre chose, on le veux juste que ce véhicule bouge, l'appel de seDéplace() de véhicule suffira. A l’inverse si le déplacement du type réel de l'objet dois influencer le contexte d’exécution, une méthode polymorphe est nécessaire ...


    Lors de l'appel d'une méthode polymorphique l'interpréteur ne connait pas la méthode à exécute , il est obliger de chercher la dernière méthode redéfinit du type réel de l'objet et de l’exécuter. Ça demande du temps, .... c'est ce qu'on appel une liaison dynamique, et inversement statique pour les non polymorphique. En java, toutes les méthodes sont polymorphique , mais bizarrement les membres ne le sont pas....

    Voilà pour l'éffort de pédagogie, j'éspère que t'a tout compris

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Ben ton exemple illustre plutôt l'usage d'une interface, je ne vois pas l'intérêt d'avoir une classe mère pour redéfinir dans les classe filles une méthode abstraite...

    Le polymorphisme est intéressant quand tu as un noyau commun à plusieurs objets. Prenons l'exemple d'une personne et d'un employé.
    Un employé est assurément une personne mais l'inverse n'est pas vrai.
    Donc, tout ce qui concerne une personne (nom, prénom, etc...) se retrouvera dans la classe Personne, les informations spécifiques à son statut d'employé se retrouvant dans une classe Employe (extends Personne).

    Bref, l'aspect généralisation / spécialisation n'est pas étranger à l'aspect polymorphisme...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 354
    Points : 491
    Points
    491
    Par défaut
    OButterlin

    je viens de revérifier , et ma définition semble correcte. Après le truc c'est que en java toutes les méthodes sont polymorphe ...

    L'usage des interfaces ou des méthodes abstraite , c'est plus de la programmation par contrat. C'est un peux différent, mais ça se base aussi sur le polymorphisme ....

  5. #5
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    je ne conseillerai pas le terme "objet polymorphé" ... disons plutot que les références vers des objets sont "polymorphes".
    Qu'est ce que ça veut dire? que tu demandes quelque chose à l'objet qui est à l'autre bout du fil mais que tu n'a pas besoin de connaître la vraie nature de cet objet (découplage entre la demande de service et sa réalisation).
    prenons un exemple : tu as un objet qui sait "faire le ménage" ... tu lui demandes de faire le ménage un point c'est tout ("just do it" ), quelqu'un t'as donné cette référence mais tu n'as pas besoin de savoir que ce quelqu'un est passé de "SUN lave plus blanc" à "XXX (je ne citerai pas de nom ici) nettoie de fond en comble".
    Après la mise en place peut se faire de diverses manières: héritage ou implantation d'une interface.
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

Discussions similaires

  1. Déclarer et utiliser un objet polymorph
    Par JeanNoel53 dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 08/07/2015, 11h37
  2. Réponses: 4
    Dernier message: 13/02/2014, 21h00
  3. Liste et objets polymorphes
    Par the_angel dans le forum C++
    Réponses: 10
    Dernier message: 25/07/2012, 13h35
  4. Collection d'objets polymorphes: Comment faire ?
    Par sapin dans le forum Débuter
    Réponses: 25
    Dernier message: 19/06/2008, 13h32
  5. Peux t'on créer une copie locale de l'objet partagé?
    Par Anonymous dans le forum CORBA
    Réponses: 8
    Dernier message: 16/04/2002, 16h20

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