Product Design, Manufacturing & Innovation Resources
Hogar » Polimorfismo (programación)

Polimorfismo (programación)

1967
  • Christopher Strachey
Espacio de trabajo de programación informática que demuestra el polimorfismo con fragmentos de código.

(Imagen generada únicamente con fines ilustrativos)

El polimorfismo, del griego que significa "muchas formas", permite que los objetos de diferentes clases sean tratados como objetos de una superclase común. Permite una única interfaz, como una método Nombre que se utilizará para una clase general de acciones. La acción específica se determina por el tipo exacto del objeto en tiempo de ejecución. Esto se suele lograr mediante la sobreescritura de métodos.

El polimorfismo es un concepto poderoso que permite escribir código flexible y desacoplado. La forma más común en Programación orientada a objetos El polimorfismo de subtipos se habilita mediante la herencia y la sobreescritura de métodos. Cuando una subclase proporciona una implementación específica para un método que ya está definido en su superclase, se denomina sobreescritura. Una variable del tipo de la superclase puede hacer referencia a un objeto de cualquiera de sus subclases. Cuando se llama a un método sobre esta variable, la versión del método que se ejecuta es la que pertenece a la clase real del objeto, no al tipo de la variable. Esta decisión se toma en tiempo de ejecución, un proceso conocido como despacho dinámico o enlace tardío.

Por ejemplo, consideremos una superclase `Shape` con un método `calculateArea()`. Las subclases como `Circle` y `Rectangle` pueden heredar de `Shape` y proporcionar sus propias implementaciones específicas de `calculateArea()`. Un programa puede entonces tener una lista de objetos `Shape`, que contiene instancias de `Circle` y `Rectangle`. Al iterar sobre la lista y llamar a `calculateArea()` en cada elemento, se utilizará automáticamente la fórmula correcta para cada forma. Esto elimina la necesidad de usar largas sentencias condicionales (como `if-else` o `switch`) para comprobar el tipo de cada objeto, lo que resulta en un código más limpio y extensible. Se pueden añadir nuevas formas al sistema sin modificar el código que las procesa.

UNESCO Nomenclature: 1203
Ciencias de la computación

Tipo

Sistema abstracto

Ruptura

Incremental

Uso

Uso generalizado

Precursores

  • El concepto de punteros de función en lenguajes como C
  • conceptos de programación genéricos
  • herencia, que proporciona la jerarquía de clases necesaria para el polimorfismo de subtipos
  • La necesidad de sistemas de software flexibles y extensibles

Aplicaciones

  • dibujar diferentes formas («círculo», «cuadrado») usando una sola llamada al método «draw()»
  • Procesamiento de varios tipos de documentos (pdf, Word) con una función genérica print().
  • implementación interfaz de usuario manejadores de eventos
  • Colecciones genéricas que pueden contener objetos de tipos diferentes pero relacionados
  • marcos de inyección de dependencia

Patentes:

NA

Ideas para posibles innovaciones

  • Formatos de serialización de datos conectables (por ejemplo, json, xml, protobuf) mediante una interfaz común
  • controladores de dispositivos genéricos en un sistema operativo para diferentes hardware
  • Patrón de diseño de estrategia para algoritmos intercambiables
  • Canalizaciones de renderizado universales en motores gráficos que manejan diferentes tipos de materiales
  • sistemas de middleware que procesan varios tipos de solicitudes de red
  • Procesadores de transacciones financieras que manejan diferentes métodos de pago (tarjeta de crédito, PayPal, criptomonedas)
  • Marcos de prueba a/b que pueden intercambiar diferentes componentes de la interfaz de usuario
  • Canalizaciones de procesamiento de datos que pueden conectarse a diversas fuentes de datos (bases de datos, API, archivos)
  • Sistemas de control robótico que pueden operar diferentes tipos de actuadores a través de una API unificada
  • proveedores de algoritmos criptográficos intercambiables en un marco de seguridad
Relacionado con: polimorfismo, sobrescritura, despacho dinámico, enlace tardío, subtipo, interfaz, abstracción, POO, sobrescritura de métodos, tiempo de ejecución.

Contexto histórico

Polimorfismo (programación)

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

(Si la fecha es desconocida o no es relevante, por ejemplo "mecánica de fluidos", se proporciona una estimación redondeada de su aparición notable)

décimo año aniversario

Las imágenes en tamaño completo y las descargas solo están disponibles, de forma totalmente gratuita, para los miembros registrados.

> Acceso <