Polimorfismo en la programación

Polimorfismo en la programación

  • ITOps y DevOps
6 min de lectura Actualizado Oct 23, 2020

Puntos clave: El polimorfismo en programación permite que los objetos adopten múltiples formas, proporcionando una interfaz unificada para varios tipos, crucial para la programación orientada a objetos. Mejora la flexibilidad y reutilización del código.

  • Los tipos de polimorfismo incluyen subtipo, paramétrico, ad hoc y coerción.
  • Ejemplos ilustran polimorfismo mediante clases como "Car" y sobrecarga de métodos.

El polimorfismo se está definido como un objeto que puede adoptar diversas formas. Este artículo analizará los polimorfismos y cómo se utilizan en la programación.

¿Qué es un polimorfismo?

En su nivel básico, un polimorfismo está formando parte de la teoría de tipos matemática. En informática, un objeto polimórfico está un objeto que está capaz de adoptar múltiples formas. El tipo de polimorfismo al que se somete el objeto depende de cuándo adopta su forma y de qué parte del objeto está transformándose.

Polimorfismo
Imagen de polimorfismo

Cuando el objeto se transforma:

  1. Tiempo de compilación
  2. Dinámica

¿Qué hace la transformación:

  1. Método
  2. Objetivo

Polimorfismo en programación

"En lenguajes de programación y teoría de tipos, el polimorfismo están la provision de una única interfaz para entidades de diferentes tipos, o el utiliza de un solo símbolo para representar múltiples tipos diferentes."

El polimorfismo están esencial para la programación orientada a objetos (POO). Los objetos son definidos como clases. Pueden tener propiedades y métodos. Por ejemplo, podríamos Crea un objeto definido como clase Car. Este coche podría tener:

  • Propiedades como: color, Haz, modelo, velocidad actual
  • Métodos, que son funciones invocadas por la clase, como: ir, parar, aparcar, girar a la izquierda, girar a la derecha

Para que el objeto Car anterior sea polimórfico, sus propiedades y métodos pueden llamarse usando el mismo nombre de clase "Car" pero invocar diferentes tipos según cómo se están usados en el código.

Tipos de polimorfismo

Son cuatro tipos principales de polimorfismo:

Tipos de polimorfismo

Veamos cada uno.

Polimorfismo de subtipo (Runtime)

El polimorfismo de subtipo están el tipo de polimorfismo más común. Normalmente están el que se menciona cuando alguien dice: "El objeto está polimórfico." Un polimorfismo de subtipo utiliza un nombre de clase para referirse a varios tipos de subtipos a la vez. En el ejemplo anterior del coche, Crea la clase de objeto, "Coche", y Define múltiples subtipos de ella como: Ford, Chevrolet, Kia, Nissan, Volkswagen, BMW, Audi y Tesla. Cada coche tiene su color de propiedad. Todos los subtipos pueden referenciarse indistintamente usando la clase Car. Cada coche tiene una propiedad, color, y ahora podemos Obtén el color de cada subtipo de la clase Car. El polimorfismo tiene lugar en tiempo de ejecución. Podemos escribir una función para obtener el color de cualquiera de los subtipos de coches. La función puede verse así (no escrita en ningún lenguaje de programación específico):

    getColor(BMW)
	→ returns red
getColor(Audi)
	→ returns blue
getColor(Kia)
	→ returns yellow

Polimorfismo paramétrico (sobrecarga)

Un polimorfismo paramétrico proporciona específicamente una forma de utilizar una función (el mismo código) para interactuar con varios tipos. Un ejemplo sería una lista de tipos. Un polimorfismo paramétrico podría eliminar, añadir o reemplazar elementos de esta lista independientemente del tipo del elemento. El código, que podría ser una función de polimorfismo paramétrico escrita en Python:

    for (element in list):
	list.remove(element)

Polimorfismo ad hoc (Tiempo de compilación)

Para polimorfismo ad hoc, las funciones con el mismo nombre actúan de forma diferente para distintos tipos. Python está tipado dinámicamente (no requiere especificar el tipo). La función de suma en Python están un polimorfismo ad hoc porque están una única función con el mismo nombre, "+", que funciona sobre múltiples tipos. Ambos (Python):

    3 + 4
"Foo" + "bar"

Devuelve un valor de sus tipos correspondientes, int y String, respectivamente.

    → 7
→ "Foobar"

Para valores de tipo int, la función de suma los dos valores, de modo que 3+4 devuelve 7. Para valores de tipo String, la función de suma concatena las dos cadenas, de modo que "Foo" + "bar" devuelve "Foobar".

Polimorfismo de coacción (Molde)

El polimorfismo de coerción están la transformación directa de un tipo en otro. Ocurre cuando un tipo se convierte en otro tipo. Antes, el polimorfismo ocurría interactuando con diferentes tipos a través de la clase objeto o las funciones. El tipo de un objeto podía seleccionarse cuando se ejecutaba el programa. Una sola función podía funcionar con diferentes tipos. Un ejemplo sencillo están transformar valores numéricos de ints, a dobles, a flotantes y viceversa. Dependiendo del lenguaje de programación, el tipo puede definirse en la variable, o a veces existe un método en los tipos para convertir su valor a otro tipo. Python convierte tipos así:

    int(43.2) #Converts a double to an int
float(45) #Converts an int to a float

Java podría convertir el tipo simplemente definiéndolo:

    int num = 23;
double dnum = num;

o

    double dnum = Double.valueOf(inum);

Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.

Más de ITOps y DevOps

Suscríbete al Informe

Al registrarse para esta oferta te son confirmar que te leído y aceptado la Política de Privacidad de BMC.

Gracias te

Tú te has suscrito a The Brief
El Brief abarca la orquestación de mainframe y empresa—BMC AMI y Control-M—y la investigación de analistas, despliegues de clientes y eventos en ambas áreas.