Polimorfismo en OOPS: ¿Qué es el polimorfismo [Explicación detallada]

Publicado: 2020-11-24

El polimorfismo en OOP es inseparable y un concepto esencial de todo lenguaje de programación orientado a objetos. Básicamente, un objeto o referencia puede tomar múltiples formas en diferentes instancias. Como sugiere la palabra, 'poli' significa 'muchos' y 'morph' apunta a 'formas'; por lo tanto, el polimorfismo como un todo significaría 'una propiedad de tener muchas formas'.

El lenguaje de programación orientado a objetos procesa clases y objetos mediante una sola interfaz. Implementa los conceptos de sobrecarga de funciones, anulación y funciones virtuales. Además, normalmente se usa para instrumentar la herencia en la programación.

Leer: Polimorfismo vs Herencia

Tabla de contenido

Un ejemplo de polimorfismo en OOP

El polimorfismo es el método en un lenguaje de programación orientado a objetos que realiza diferentes cosas según la clase del objeto que lo llama. Con el polimorfismo, se envía un mensaje a varios objetos de clase y cada objeto responde de forma adecuada según las propiedades de la clase.

El siguiente es el código que explica claramente el polimorfismo:

advertencias de uso;
# Creando clase de paquete
paquete A;
# Creando Constructor
sub nuevo
{
# shift tomará el nombre del paquete
# y asignarlo a la variable 'clase'
mi $clase = turno;
mi $yo = {
'nombre' => turno,
'roll_no' => cambio
};
método secundario
{
print(“Esto pertenece a la clase A”);
}
};
paquete B;
# La matriz @ISA contiene una lista
# de las clases principales de esa clase, si las hay
mi @ISA = (A);

submétodo
{
print(“Esto pertenece a la clase B”);
}
paquete principal;
B->método();
A->método();

Producción:

Esto pertenece a la clase B.

Esto pertenece a la clase A.

Aprenda a crear aplicaciones como Swiggy, Quora, IMDB y más

Explicación

Para la primera salida, el método() definido en la clase B anula la definición heredada de la clase A y viceversa para la segunda salida. Esta propiedad es útil para ampliar la funcionalidad de cualquier paquete preexistente sin volver a escribir la definición completa de la clase. Por lo tanto, facilita el trabajo del programador y la razón de su uso generalizado.

Tipos de polimorfismo en Oops

En el lenguaje de programación orientada a objetos (OOPS), hay dos tipos de polimorfismo, como se muestra a continuación:

  1. Polimorfismo de enlace estático (o tiempo de compilación), p. ej., sobrecarga de métodos
  2. Polimorfismo de enlace dinámico (o tiempo de ejecución), por ejemplo, anulación de métodos

Fuente

1. Tiempo de compilación o polimorfismo estático

Con la sobrecarga de métodos, se logra un polimorfismo estático en los lenguajes de programación orientada a objetos que permiten al programador implementar varios métodos. Los nombres que usan pueden ser los mismos, pero sus parámetros son diferentes. Ciertas condiciones son propicias para el polimorfismo estático como se muestra a continuación:

  • Los tipos de todos los parámetros deben ser diferentes.
  • La secuencia de los Parámetros puede ser diferente.
  • El número de parámetros de un método debe diferir del otro método.

En el polimorfismo de enlace estático , el tipo coincidente y el número de argumentos invocan las funciones sobrecargadas.

  • Como toda esta información está disponible durante el tiempo de compilación, el compilador selecciona la función apropiada.
  • La sobrecarga de funciones lo hace, y la sobrecarga de operadores también se denomina enlace estático o enlace temprano.

Programa

clase A // clase base

{

en un;

público :

visualización vacía ()

{

cout<< “Clase A” ;

}

};

clase B: public A // clase derivada

{

intb ;

público :

visualización vacía ()

{

cout<< “Clase B” ;

}

};

En el programa anterior, el prototipo de la función display() es el mismo tanto en la clase base como en la derivada. Por lo tanto, el enlace estático no se puede aplicar aquí. Este programa funcionaría mejor en tiempo de ejecución con una selección adecuada de funciones.

  • Durante el tiempo de ejecución, el compilador del lenguaje identifica varios métodos al identificar las firmas de esos métodos.
  • El compilador primero identifica la firma del método y decide el método para una llamada de método específica durante la compilación del programa.
  • La ejecución del polimorfismo en tiempo de compilación es mucho más rápida, pero el proceso no es tan flexible.

Lea también: Preguntas de la entrevista OOPS

Tiempo de ejecución o polimorfismo dinámico

En el polimorfismo dinámico, una llamada a un solo método anulado se resuelve durante el tiempo de ejecución de un programa. La anulación de métodos es uno de los ejemplos destacados de polimorfismo en tiempo de ejecución. En este proceso, la anulación se realiza a través de punteros y funciones virtuales.

  • En la anulación de métodos, se declara un solo método en una subclase presente en una clase principal. La clase secundaria obtiene un método para la implementación.
  • Durante el polimorfismo en tiempo de ejecución, la clase ofrece la especificación propia a otro método heredado. Esta transferencia entre métodos se logra sin modificar los códigos de objeto de la clase principal.

Programa

#incluir <iostream>

utilizando el espacio de nombres estándar;

clase Animal { // clase base

público :

color de cadena = "Marrón" ;

};

clase Perro: Animal publico // clase Animal heredada.

{

público :

color de la cadena = "Verde" ;

};

int principal ( vacío ) {

Animal d= Perro();

cout<<d.color;

}

Producción:

marrón

  • En el polimorfismo de tiempo de ejecución, el método del objeto se invoca en el tiempo de ejecución en lugar de en el tiempo de compilación.
  • Es posible gracias a la anulación de métodos, que también se denomina vinculación dinámica o vinculación tardía.
  • El proceso de polimorfismo dinámico es comparativamente más lento pero flexible que el polimorfismo en tiempo de compilación.

Diferencias B/N Polimorfismo en tiempo de compilación y en tiempo de ejecución

Polimorfismo en tiempo de compilación Polimorfismo en tiempo de ejecución
Invocación de función La función se invoca en el momento de la compilación. La función se invoca en el tiempo de ejecución.
Términos comunes Se conoce como sobrecarga, enlace temprano y enlace estático. Se conoce como anulación, vinculación tardía y vinculación dinámica.
Nombre del método y parámetros En Overloading, más de un método tiene el mismo nombre pero con diferente número o tipo de parámetros. En Overriding, más de un método tiene el mismo nombre, número y tipo de parámetros.
Transportistas Se logra con sobrecarga de funciones y operadores. Se consigue con funciones virtuales y punteros.
Tiempo de ejecución Se ejecuta más rápido que el polimorfismo en tiempo de ejecución en el momento de la compilación. Se ejecuta más lento que el polimorfismo en tiempo de compilación en el tiempo de ejecución.
Flexibilidad Es menos flexible ya que todo se ejecuta en el momento de la compilación. Es más flexible ya que todo se ejecuta en tiempo de ejecución.

Ultimas palabras

El polimorfismo es el concepto de programación orientada a objetos que debe aprenderse, ya que ofrece varias ventajas durante la programación. Con Polymorphism, el usuario puede remodelar las clases y códigos probados. Es útil para ampliar la programación por sí mismo. También permite al usuario almacenar múltiples variables de diferentes tipos, como double, Float, Int o Long en una sola variable para simplificar su búsqueda e implementación.

Si está interesado en obtener más información sobre OOP, desarrollo de software de pila completa, consulte el Diploma PG de upGrad & IIIT-B en desarrollo de software de pila completa, que está diseñado para profesionales que trabajan y ofrece más de 500 horas de capacitación rigurosa, más de 9 proyectos. y asignaciones, estado de ex alumnos de IIIT-B, proyectos finales prácticos y asistencia laboral con las mejores empresas.

Conviértase en un desarrollador de pila completa

UPGRAD Y DIPLOMA PG DE IIIT-BANGALORE EN DESARROLLO DE SOFTWARE
Aprende más