- Duck typing
-
En programmation informatique, le duck typing (traduction: typage canard) est un mode d'interprétation du code source utilisé par certains langages de programmation orientés objet à typage dynamique. En duck typing, la sémantique d'un objet, c'est-à-dire son type dans le contexte où il est utilisé, est déterminée par l'ensemble de ses méthodes et de ses attributs, et non, comme il est habituel, par un type défini explicitement par le programmeur.
L'analogie au canard vient de la phrase suivante: « Si je vois un animal qui vole comme un canard, cancane comme un canard, et nage comme un canard, alors j'appelle cet oiseau un canard ».
Ainsi, un objet d'une classe A donnée peut être considéré pour certaines opérations comme un objet d'une autre classe B, totalement différente (il n'est justement pas nécessaire qu'il y ait héritage entre les deux classes), pour certaines opérations, à condition que les méthodes et les attributs de B qui sont utilisés dans les opérations soient aussi présents dans A.
Exemple
fonction calcule(a, b, c) => renvoie (a+b)*c a= calcule (1, 2, 3) b= calcule ('pommes ', 'et oranges, ', 3) affiche en_chaine a affiche en_chaine b
Dans cet exemple, des objets sans relation d'héritage peuvent être utilisés (nombres, listes et chaines de caractères). Tant qu'ils gèrent les méthodes "+" et "*", l'opération fonctionne. Traduit dans des langages comme Ruby ou Python, la sortie serait :
9 "pommes et oranges, pommes et oranges, pommes et oranges, "
Wikimedia Foundation. 2010.