Product Design, Manufacturing & Innovation Resources
Maison » Polymorphisme (programmation)

Polymorphisme (programmation)

1967
  • Christopher Strachey
Espace de travail de programmation informatique démontrant le polymorphisme avec des extraits de code.

(Image générée à titre d'illustration uniquement)

Le polymorphisme, du grec signifiant « plusieurs formes », permet de traiter des objets de classes différentes comme des objets d'une superclasse commune. Il permet une interface unique, telle qu'une méthode Le nom, utilisé pour une classe générale d'actions, détermine l'action spécifique en fonction du type exact de l'objet lors de l'exécution. Ceci est souvent réalisé par redéfinition de méthode.

Polymorphism is a powerful concept that allows for writing flexible and decoupled code. The most common form in OOP is subtype polymorphism, which is enabled by inheritance and method overriding. When a subclass provides a specific implementation for a method that is already defined in its superclass, it is called overriding. A variable of the superclass type can refer to an object of any of its subclasses. When a method is called on this variable, the version of the method that gets executed is the one belonging to the object’s actual class, not the variable’s type. This decision is made at runtime, a process known as dynamic dispatch or late binding.

Par exemple, considérons une superclasse `Shape` possédant une méthode `calculateArea()`. Les sous-classes telles que `Circle` et `Rectangle` peuvent hériter de `Shape` et implémenter elles-mêmes la méthode `calculateArea()`. Un programme peut alors disposer d'une liste d'objets `Shape` contenant des instances de `Circle` et de `Rectangle`. Lors du parcours de la liste et de l'appel de `calculateArea()` sur chaque élément, la formule appropriée sera automatiquement appliquée à chaque forme. Cela élimine le besoin de longues instructions `if-else` ou `switch` pour vérifier le type de chaque objet, ce qui permet d'obtenir un code plus clair et plus extensible. De nouvelles formes peuvent être ajoutées au système sans modifier le code qui les traite.

UNESCO Nomenclature: 1203
- Informatique

Taper

Système abstrait

Perturbation

Incrémentale

Usage

Utilisation généralisée

Précurseurs

  • le concept de pointeurs de fonction dans des langages comme C
  • concepts de programmation génériques
  • l'héritage, qui fournit la hiérarchie de classes nécessaire au polymorphisme des sous-types
  • le besoin de systèmes logiciels flexibles et extensibles

Applications

  • Dessiner différentes formes (cercle, carré) en utilisant un seul appel de méthode draw()
  • traitement de différents types de documents (pdf, word) avec une fonction générique print()
  • implémentation de gestionnaires d'événements d'interface utilisateur
  • collections génériques pouvant contenir des objets de types différents mais apparentés
  • cadres d'injection de dépendances

Brevets:

NA

Idées d'innovations potentielles

En raison du trafic généré par les robots de scraping, actuellement supérieur à 40 000 par jour, ce contenu est réservé aux membres de la communauté.
> Connexion < ou > Registre < (100% gratuit) pour y accéder, ainsi qu'à tous les autres contenus et outils à accès restreint.

Lié à : polymorphisme, surcharge, répartition dynamique, liaison tardive, sous-type, interface, abstraction, POO, surcharge de méthode, exécution.

Contexte historique

Polymorphisme (programmation)

1956
1960
1967
1967
1970
1970
1970
1953
1960
1960
1967
1970
1970
1970
1970

(si la date est inconnue ou non pertinente, par exemple « mécanique des fluides », une estimation arrondie de son émergence notable est fournie)

Inventions, innovations et principes techniques connexes

Les images en pleine résolution et les téléchargements sont uniquement disponibles, et 100% gratuits, pour les membres inscrits.