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.

Elle se distingue de la surcharge de fonction présente dans de nombreux langages de programmation, dans lesquels le choix de la fonction à utiliser dépend du type statique de ses paramètres, ce qui correspond à un dispatch multiple effectué au moment de la compilation.

Le premier environnement orienté objet à avoir eu cette fonctionnalité, et le plus connu, est le Common Lisp Object System, mais d'autres langages comme Dylan, Slate, Cecil, GNU Guile, Seed7, Julia et le descendant de Java Nice offrent des fonctionnalités similaires. En C++ il est possible d'implémenter des multiméthodes comme foncteurs et templates de plusieurs façons.

Exemples

modifier

Dans les langages comme Java qui ne peuvent avoir un dispatch que sur un seul argument, on utilise le patron de conception visiteur. En C++, l'utilisation conjointe du patron de conception visiteur et du mécanisme de template permet d'obtenir un dispatch sur plusieurs arguments[1].

Python quant à lui nécessite d'importer le module multimethods.py[2].

Common Lisp

modifier

Soit la multiméthode collision-avec :

 (defmethod collision-avec ((x asteroide) (y asteroide))
   ;; cas où un astéroïde frappe un astéroïde
   )
 (defmethod collision-avec ((x asteroide) (y vaisseau))
   ;; cas où un astéroïde frappe un vaisseau spatial
   )
 (defmethod collision-avec ((x vaisseau) (y asteroide))
   ;; cas où un vaisseau spatial frappe un astéroïde
   )
 (defmethod collision-avec ((x vaisseau) (y vaisseau))
   ;; cas où un vaisseau spatial frappe un vaisseau spatial
   )

Notes et références

modifier

Voir aussi

modifier

Sur les autres projets Wikimedia :

📚 Artikel Terkait di Wikipedia

Bill Murray

apparaît dans tous les films de Wes Anderson de Rushmore (1998) à The French Dispatch (2021) et a collaboré avec Jim Jarmusch dans quatre de ses films. Il prête

Saoirse Ronan

2020 : Ammonite de Francis Lee : Charlotte Murchison 2021 : The French Dispatch de Wes Anderson : la principale showgirl 2022 : Coup de théâtre (See How

Surcharge de fonction

l'exécution). La surcharge dynamique est également appelée « dispatch multiple » et une méthode surchargée dynamiquement « multiméthode ». Article détaillé :

Ordre de mérite

profile management dispatch algorithm, 2012, 25–26 p. (ISBN 978-1-4673-2729-9, DOI 10.1109/PESGM.2012.6345405, S2CID 24866215) Dispatch économique : concepts

Julia (langage)

principalement sur le polymorphisme ad-hoc (aussi appelé dispatch multiple ou multi méthodes) et le polymorphisme paramétré ou de type (aussi appelé programmation

Frances McDormand

signale qu'elle jouera dans le nouveau film de Wes Anderson, The French Dispatch, ayant déjà collaboré avec ce réalisateur pour Moonrise Kingdom et L'Île

Nellie Bly

chercher du travail. En réaction à un article sexiste du journal Pittsburgh Dispatch (en) (« Ce à quoi sont bonnes les jeunes filles »), elle écrit au rédacteur

Full Metal Jacket

Gustav Hasford et des mémoires de guerre de Michael Herr, intitulées Dispatches. Son titre fait référence à un type de balle blindée. Le film, qui met