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 :

Utilité du polymorphisme


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Ingénieur d'études et développement JAVA
    Inscrit en
    Mai 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 202
    Par défaut Utilité du polymorphisme
    Bonjours tout le le monde,

    Quelle est le genre de problème qu'on résout à l'aide du polymorphisme, et-il utile pour l'injection de dépendance?

    Merci

  2. #2
    Membre confirmé Avatar de coshibe
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2011
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 183
    Par défaut
    C'est une sacrée question que tu poses là et bien théorique.

    Déja à ma connaissance l'injection de dépendances est propre à la programmation objet. Et presque toujours en POO tu as à faire au polymorphisme.

    Donc késako le polymorphisme?
    chez wiki ca di ça!

    Concrètement le polymorphisme te permet de définir des méthodes pour des objets d'une classe avant que celle ci ne soit créée. Pour cela tu crée une classe de base dont seront issues les futures classes.

    Par exemple Dieu, il a programmé la classe mammifère avant de faire l'homme et le chien. Mais il savait déjà qu'il trouverait les méthodes Manger() et dormir(). Du coup l'homme et le chien qui n'ont rien à voir ont pourtant les mêmes méthodes de base.

    L'autre avantage du polymorphisme c'est de pouvoir ajouter des nouveaux objets d'un type nouveau dans un scenarii pré établi et cela sans même connaitre le type de ce nouvel objet.

    Ce qui fait que l'injection de dépendance est grandement facilitée grâce au polymorphisme parce que tu vas pouvoir gérer les injections sans savoir de quelle nature seront tes injections.


    Ai je répondu à ta question?

  3. #3
    Membre éclairé
    Profil pro
    Ingénieur d'études et développement JAVA
    Inscrit en
    Mai 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 202
    Par défaut
    comment java fait pour la liaison dynamique ?

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par naou18 Voir le message
    comment java fait pour la liaison dynamique ?
    Euh... Question ouverte.
    Essai de réponse :

    Lors d'un appel de méthode d'instance, Java vérifie quelle est la classe réelle de cette instance, et vérifie si cette classe redéfinit la méthode, ou s'il faut remonter dans la hiérarchie des classes pour trouver une (re)définition de cette méthode.
    La méthode effectivement appelée est la première trouvée comme ça.

    Cela impose donc à Java de vérifier quelle méthode appeler, avant de l'appeler. Ce qui n'est pas aussi efficace que si on appelait directement la "méthode voulue" qu'on aurait spécifiée statiquement.
    Sauf dans le cas de classes ou méthodes finales, auquel cas il ne peut pas y avoir redéfinition, donc il n'y a rien à vérifier et il n'y a pas à proprement parler de liaison dynamique.
    À noter que les optimisations de la JVM sont souvent capables d'accélérer ce procédé (par exemple s'il sait qu'il n'y a aucune sous-classe qui justifie de vérifier quoi que ce soit, chargée ou accessible sur le bout de code concerné)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre éclairé
    Profil pro
    Ingénieur d'études et développement JAVA
    Inscrit en
    Mai 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 202
    Par défaut
    Merci pour vos réponse en faite j'ai viens de trouvé la réponse, voila un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class A{
    public void f(){...}
     
    class B extends A{
    public void f(){...}
    }
     
    et A a = new B();
    }
    la question qui se pose :
    l'appel de "a.f()" est'il relatif à la version "f()" de A ou de B?

    la réponse est :
    ce qui détermine la version à utiliser lors de l'appel d'une méthode est le type dynamique de l'instance cible de l'appel.
    Toutefois le contrôle de la validité de l'appel reste statique : c a d l'appel de "a.f()" produirait une erreur de compilation si "f()" n'est pas une méthode de A.

    Donc en conclu que la liaison dynamique existe belle et bien au moment de l’exécution.

  6. #6
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Euh... Question ouverte.
    Essai de réponse :

    Lors d'un appel de méthode d'instance, Java vérifie quelle est la classe réelle de cette instance, et vérifie si cette classe redéfinit la méthode, ou s'il faut remonter dans la hiérarchie des classes pour trouver une (re)définition de cette méthode.
    La méthode effectivement appelée est la première trouvée comme ça.
    Salut,
    je me demande si la JVM n'accèderait pas plutôt directement à la bonne méthode via une table d'indirections type_de_classe --> méthode qui serait générée à la définition des classes ? Si quelqu'un a plus d'infos... mais c'est peut-être un peu hors-sujet

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Djakisback Voir le message
    je me demande si la JVM n'accèderait pas plutôt directement à la bonne méthode via une table d'indirections type_de_classe --> méthode qui serait générée à la définition des classes ?
    Certainement quelque chose de ce genre, si, et alors ? Cela décrit une manière de faire ce que j'ai décrit, ça ne conteste pas ce que j'ai décrit.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Utilité d'un pointeur vers une fonction ?
    Par Nasky dans le forum C
    Réponses: 10
    Dernier message: 20/03/2010, 19h54
  2. [J2EE] Utilité de la J2EE de SUN ?
    Par PeteMitchell dans le forum Java EE
    Réponses: 4
    Dernier message: 14/05/2004, 10h29
  3. [LG]Utilité du type enuméré ?
    Par tarbala dans le forum Langage
    Réponses: 2
    Dernier message: 10/12/2003, 16h20
  4. Le BIOS et son utilité
    Par le mage tophinus dans le forum Assembleur
    Réponses: 75
    Dernier message: 21/11/2003, 15h37
  5. utilité du binaire et hexadecimaux?
    Par souris78 dans le forum C
    Réponses: 9
    Dernier message: 01/07/2003, 15h08

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