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.
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.
The purpose of this MOOC is to offer a complementary capstone project to our existing MOOCs in introduction to programming. This will offer the students the possibility to both stabilize the already a
Le cours suivi propose une introduction aux concepts de base de la programmation orientée objet tels que : encapsulation et abstraction, classes/objets, attributs/méthodes, héritage, polymorphisme, ..
Ce cours initie à la programmation en utilisant le langage Java. Il ne présuppose pas de connaissance préalable. Les aspects plus avancés (programmation orientée objet) sont donnés dans un cours suiva
La programmation orientée objet (POO), ou programmation par objet, est un paradigme de programmation informatique. Elle consiste en la définition et l'interaction de briques logicielles appelées objets ; un objet représente un concept, une idée ou toute entité du monde physique, comme une voiture, une personne ou encore une page d'un livre. Il possède une structure interne et un comportement, et il sait interagir avec ses pairs.
In programming language theory, subtyping (also subtype polymorphism or inclusion polymorphism) is a form of type polymorphism in which a subtype is a datatype that is related to another datatype (the supertype) by some notion of substitutability, meaning that program elements, typically subroutines or functions, written to operate on elements of the supertype can also operate on elements of the subtype. If S is a subtype of T, the subtyping relation (written as S
Le dispatch multiple est une fonctionnalité de certains langages orientés objet ou fonctionnels dans lesquels une fonction ou une méthode peut être spécialisée pour plus d'un de ses paramètres formels. On l'appelle alors multiméthode. La spécialisation d'une multiméthode peut ainsi dépendre du type dynamique de plusieurs de ses paramètres objets, à la différence des langages de programmation orientés objet classiques, dans lesquels la spécialisation ne dépend que du premier paramètre implicite this.
L'objectif de ce cours est de développer des compétences de base en programmation. L'accent sera mis sur l'approche orientée-objet laquelle renforce la réutilisabilité, la maintenabilité et la fiabili
The course introduces the foundations on which programs and programming languages are built. It introduces syntax, types and semantics as building blocks that together define the properties of a progr
Ce cours aborde les concepts fondamentaux de la programmation et de la programmation orientée objet (langage JAVA). Il permet également de se familisarier avec un environnement de développement inform
Explore le sous-typage, les génériques et la variance dans Scala, en soulignant l'importance de descriptions de types précises et en démontrant des applications pratiques des expressions.
Type inference in the presence of first-class or "impredicative" second-order polymorphism a la System F has been an active research area for several decades, with original works dating back to the end of the 80s. Yet, until now many basic problems remain ...
Assoc Computing Machinery2024
We propose a semantic shape editing method to edit 3D triangle meshes using parametric implicit surface templates, benefiting from the many advantages offered by analytical implicit representations, such as infinite resolution and boolean or blending opera ...
2024
, , , , , ,
Amyloid polymorphism is a hallmark of almost all amyloid species, yet the mechanisms underlying the formation of amyloid polymorphs and their complex architectures remain elusive. Commonly, two main mesoscopic topologies are found in amyloid polymorphs cha ...