Polymorphisme (informatique) - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Polymorphisme par sous-typage (dérivation)

L'idée est de partir d'un type et de le modifier. Par exemple, on peut créer une classe de base, puis faire des classes dérivées.

Ce concept est associé à l'approche orientée objet.

en C++ :

      class Forme {      public:         virtual float Aire() = 0;      };             class Carre:public Forme {      public:         virtual float Aire() { return m_cote*m_cote; }      private:         float m_cote;      };             class Cercle:public Forme {      public:         virtual float Aire() { return 3.1415926535*m_rayon*m_rayon; }      private:         float m_rayon;      };      

en Java :

      abstract class Forme {         abstract float aire() ;      }             class Carre extends Forme{         float cote;         float aire() {             return cote * cote;         }      }             class Cercle extends Forme{         float rayon;         float aire() {             return Math.PI*rayon*rayon;         }      }      

Grâce aux fonctions virtuelles, on peut faire un algorithme en n'utilisant que la classe de base qui va automatiquement appeler les fonctions des classes dérivées:

en C++ :

      float AireTotal(Forme* tabl[], int nb) {         float s=0;         for(int i = 0;i<nb; i++) {            s+= tabl[i]->Aire(); // le programme sait automatiquement quelle fonction appeler         }         return s;      }             // ...      Forme* tableau[3] = {new Carre, new Cercle, new Carre};      AireTotal(tableau,3);      // ...      

en Java :

      float aireTotal(Forme[] tabl, int nb) {         float s=0;         for(int i = 0; i < nb; i++) {            s += tabl[i].aire(); // le programme sait automatiquement quelle fonction appeler         }         return s;      }             // ...      Forme[] tableau = { new Carre(), new Cercle(), new Carre()};      aireT = aireTotal(tableau, 3);   //aireT aura été défini comme float      // ...      
Page générée en 0.068 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise