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.

Polymorphism is a powerful concept that allows for writing flexible and decoupled code. The most common form in OOP is subtype polymorphism, which is enabled by inheritance and method overriding. When a subclass provides a specific implementation for a method that is already defined in its superclass, it is called overriding. A variable of the superclass type can refer to an object of any of its subclasses. When a method is called on this variable, the version of the method that gets executed is the one belonging to the object’s actual class, not the variable’s type. This decision is made at runtime, a process known as dynamic dispatch or late binding.

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
- Informática

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().
  • Implementar controladores de eventos de interfaz de usuario
  • Colecciones genéricas que pueden contener objetos de tipos diferentes pero relacionados
  • marcos de inyección de dependencia

Patentes:

NA

Ideas para posibles innovaciones

Debido al bloqueo del tráfico generado por bots, que actualmente supera los 40.000 al día, este contenido está reservado para los miembros de la comunidad.
> Iniciar sesión < o > Registrarse < (100% gratis) para acceder a esto, al igual que a todo el demás contenido y herramientas restringidos.

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)

Invención, innovación y principios técnicos relacionados.

Las imágenes a tamaño completo y las descargas sólo están disponibles, 100% gratis, para los miembros registrados.

> Acceso <