Résumé
En informatique et en théorie des types, le polymorphisme, du grec ancien polús (plusieurs) et morphê (forme), est le concept consistant à fournir une interface unique à des entités pouvant avoir différents types. Par exemple, des opérations telles que la multiplication peuvent ainsi être étendues à des scalaires aux vecteurs ou aux matrices, l'addition, des scalaires aux fonctions ou aux chaînes de caractères, etc. Il existe plusieurs sortes de polymorphismes fondamentalement différents : Selon le langage informatique employé, le polymorphisme peut être réalisé par différents moyens, inhérents au langage ou par emploi de patrons de conception. Le polymorphisme ad hoc ou surcharge de fonction consiste à déclarer plusieurs fonctions ou méthodes ayant le même nom, mais des paramètres différents (par leur nombre ou leurs types). Selon que le langage est typé statiquement ou dynamiquement, la détermination de la bonne implémentation pour les paramètres donnés se fait à la compilation ou à l'exécution. Voici un exemple de surcharge en C++ : #include #include void fonctionSurchargee(std::string str) { std::cout < "Implémentation 1 (string)" < std::endl; } void fonctionSurchargee(int x) { std::cout < "Implémentation 2 (int)" < std::endl; } int main(int argc, char *argv[]) { fonctionSurchargee("Hello World!"); // Affiche : Implémentation 1 (string) fonctionSurchargee(42); // Affiche : Implémentation 2 (int) return 0; } Le polymorphisme paramétré consiste à définir des fonctions qui peuvent être appliquées à des types paramétrés. Par exemple, il est possible de définir une même fonction concat permettant de concaténer deux listes quel que soit le type de données qu'elles contiennent. Dans ce cas, le type de la fonction concat est noté : où α est un paramètre qui représente le type de données que contiennent les listes. α peut correspondre aux types entier, réel, chaîne de caractères, listeβ, etc. Le polymorphisme paramétré est utilisé par les langages Caml, Haskell, PureScript et Scala.
À propos de ce résultat
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.