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.

Le polymorphisme est un concept puissant qui permet d'écrire du code flexible et découplé. La forme la plus courante est POO Le polymorphisme de sous-type, rendu possible par l'héritage et la redéfinition de méthodes, est un exemple de polymorphisme de sous-type. Lorsqu'une sous-classe implémente une méthode déjà définie dans sa superclasse, on parle de redéfinition. Une variable du type de la superclasse peut référencer un objet de n'importe laquelle de ses sous-classes. Lorsqu'une méthode est appelée sur cette variable, c'est la version de la méthode exécutée qui correspond à la classe de l'objet, et non au type de la variable. Ce choix est effectué à l'exécution, un processus appelé résolution dynamique ou liaison tardive.

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()
  • exécution interface utilisateur gestionnaires d'événements
  • 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

  • formats de sérialisation de données enfichables (par exemple, json, xml, protobuf) utilisant une interface commune
  • pilotes de périphériques génériques dans un système d'exploitation pour différents matériels
  • modèle de conception de stratégie pour algorithmes interchangeables
  • pipelines de rendu universels dans les moteurs graphiques qui gèrent différents types de matériaux
  • systèmes middleware qui traitent différents types de requêtes réseau
  • processeurs de transactions financières gérant différents modes de paiement (carte de crédit, PayPal, crypto)
  • cadres de tests A/B qui peuvent échanger différents composants de l'interface utilisateur
  • pipelines de traitement de données pouvant se connecter à diverses sources de données (bases de données, API, fichiers)
  • systèmes de contrôle robotiques capables de faire fonctionner différents types d'actionneurs via une API unifiée
  • fournisseurs d'algorithmes cryptographiques interchangeables dans un cadre de sécurité
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)

10e année anniversaire

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