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 :

Polymorphisme / Résolution dynamique


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 36
    Par défaut Polymorphisme / Résolution dynamique
    Salut,

    Dans mes notes de cours, y'a

    * Soit l'appel de méthode suivant :
    obj.faire();

    * Cet appel est lié à la définition de la méthode

    * Si la résolution a lieu au moment de la compilation, cette ligne de code appellera même la méthode à chaque fois

    * Mais Java reporte la résolution jusqu'au moment de l'exécution. On parle de résolution dynamique

    * La résolution dynamique offre de la flexibilité en conception


    J'ai pas compris ce qu'il veut dire !
    Est-ce que vous pouvez m'expliquer ?
    Merci.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    C'est asssez mal dit sauf si le cours écrit est un résumé de ce que tu est censé voir en détail en classe.

    D'abord, java ne déporte pas systématiquement la résolution, ça dépend des conditions.


    une méthode à deux choses:
    • une déclaration (regroupant son nom, son type de retour et le type de ses paramètre)
    • une définition (le code qui se trouve dedans).



    Maintenant, pour faire le lien entre l'appel de méthode et ce qu'il faut concrètement exécuter, il existe en gros deux approches possibles:


    • Dans un programme genre en C (et dans certains cas en java), on va, grosso modo, à la compilation
      1. jeter la déclaration (on en a plus besoin)
      2. mettre la définition à un endroit précis du fichier compilé
      3. remplacer tous les appels à la méthode par un saut vers cette adresse.

      (je sur simplifie volontairement le processus réel pour comprendre)
    • En java, on va faire autre chose. On va
      1. mettre la définition à un endroit précis du fichier compilé
      2. stocker dans l'objet une table avec les déclaration et ces adresses.
      3. rempalcer tous les appels à faire() par une séquence consultation de la table; trouver l'adresse de la méthode; sauter vers celle-ci.

      (ici aussi, je sur simplifie la réalité est bien plus complexe)


    Donc, pour ce code
    on a dans le fichier compilé java ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "trouver une méthode de type "void faire() présente sur l'instance obj" et l'appeler
    Ainsi, si on a les classes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class A {
       public void faire(){
           System.out.println("Bonjour");
       }
    }
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class B extends A {
       public void faire(){
           System.out.println("au revoir");
       }
    }
    le faire() qui sera appelé à l'exécution différera suivant que obj soit de type A ou B, sans que ça change quoi que ce soit à la compilation. On appelle ce mécanisme, en anglais, le dynamic dispatch. La jvm va aller chercher dans un table de méthodes associée à l'instance celle qui correspond à "void faire()".

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 36
    Par défaut
    Énorme
    Tu me sauves la vie. Merci beaucoup !
    Sinon, c'est une partie du cours. C'est pas un résumé héhé

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par Laidback Voir le message
    Tu me sauves la vie. Merci beaucoup !
    A combien estimes-tu ta vie? Que je t'envoie mon numéro de compte

    Sinon, n'oublie pas le

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 36
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    A combien estimes-tu ta vie? Que je t'envoie mon numéro de compte

    Sinon, n'oublie pas le
    Hahaha ! Mais non, sérieux ! J'ai très bien compris le mécanisme. Thanks

  6. #6
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 1
    Par défaut Merci beaucoup!!!!!!!!!!!!!
    Il semble que l'on suis le meme cours ou que nos prof ont les meme notes de cours.
    héhéhéh est-ce UQTR

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

Discussions similaires

  1. Un menu dynamique centré compatible toute résolution et IE/FF
    Par Dsphinx dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 11/04/2007, 10h51
  2. Polymorphisme et cast dynamique
    Par vcoulon dans le forum C++
    Réponses: 16
    Dernier message: 21/03/2007, 14h03
  3. Réponses: 20
    Dernier message: 02/02/2007, 11h14
  4. Réponses: 36
    Dernier message: 09/09/2006, 03h06
  5. Réponses: 2
    Dernier message: 14/11/2005, 16h04

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