Tipeo de pato

En la programación de computadoras , la mecanografía pato (traducción: escritura pato ) es un estilo de dinámica de escritura de algunos lenguajes de programación orientados a objetos . En la tipificación de pato , la semántica de un objeto , es decir, su tipo en el contexto en el que se utiliza, está determinada por todos sus métodos y atributos , y no, como suele serlo, por un tipo definido y nombrado explícitamente por el programador en sistemas nominativos . Es el equivalente de tipado estructural para lenguajes de tipado estático , como OCaml .

El nombre del sistema es una referencia a la prueba del pato (atribuida a James Whitcomb Riley ): "Si veo un pájaro que vuela como un pato, grazna como un pato y nada como un pato, entonces llamo a ese pájaro pato. . " .

Así, un objeto de una determinada clase A puede ser considerado para determinadas operaciones como un objeto de otra clase B, totalmente diferente (precisamente no es necesario que haya herencia entre las dos clases), siempre que los métodos y atributos de B que se utilizan en operaciones también están presentes en A.

En la tipificación de pato, el programador se centra en las características de los objetos que se utilizan en realidad más que en el tipo de objeto en sí. Por ejemplo, en un lenguaje nominalmente tipado, puede crear una función que tome como parámetro un objeto de tipo Duck y use sus métodos walk y gossip . En el lenguaje de tipo pato , la función equivalente tomaría un objeto de cualquier tipo como parámetro y llamaría a sus métodos caminar y chismear . Si en el tiempo de ejecución resulta que el objeto no tiene los métodos que se llaman, la función arroja un error de tiempo de ejecución .

Ejemplo

function calcule(a, b, c) => return (a+b)*c a = calcule (1, 2, 3) b = calcule ('pommes ', 'et oranges, ', 3) print a print b

En este ejemplo, se pueden usar objetos sin una relación de herencia (números, listas y cadenas). Siempre que admitan los métodos "+" y "*", la operación funciona. Traducido a lenguajes como Ruby o Python , el resultado sería:

9 "pommes et oranges, pommes et oranges, pommes et oranges, "

Referencias

  1. . (en) (en) “  Duck typing vs Structural Subtyping  ” , en http://lambda-the-ultimate.org .
  2. (in) Explorando las autopistas de Indiana: Trivia de viaje , Explorando la autopista de Estados Unidos,1 st de enero de de 2007, 317  p. ( ISBN  978-0-9744358-3-1 , leer en línea )