Programación funcional: polimorfismo
El polimorfismo, en términos de programación, significa reutilizar un solo código varias veces. Más específicamente, es la capacidad de un programa para procesar objetos de manera diferente según su tipo o clase de datos.
El polimorfismo es de dos tipos:
Compile-time Polymorphism - Este tipo de polimorfismo se puede lograr mediante la sobrecarga de métodos.
Run-time Polymorphism - Este tipo de polimorfismo se puede lograr utilizando funciones virtuales y anulación de métodos.
Ventajas del polimorfismo
El polimorfismo ofrece las siguientes ventajas:
Ayuda al programador a reutilizar los códigos, es decir, las clases una vez escritas, probadas e implementadas pueden reutilizarse según sea necesario. Ahorra un montón de tiempo.
Se puede usar una sola variable para almacenar múltiples tipos de datos.
Fácil de depurar los códigos.
Tipos de datos polimórficos
Los tipos de datos polimórficos se pueden implementar utilizando punteros genéricos que almacenan solo una dirección de byte, sin el tipo de datos almacenados en esa dirección de memoria. Por ejemplo,
function1(void *p, void *q)
dónde p y q son punteros genéricos que pueden contener int, float (o cualquier otro) valor como argumento.
Función polimórfica en C ++
El siguiente programa muestra cómo usar funciones polimórficas en C ++, que es un lenguaje de programación orientado a objetos.
#include <iostream>
Using namespace std:
class A {
public:
void show() {
cout << "A class method is called/n";
}
};
class B:public A {
public:
void show() {
cout << "B class method is called/n";
}
};
int main() {
A x; // Base class object
B y; // Derived class object
x.show(); // A class method is called
y.show(); // B class method is called
return 0;
}
Producirá la siguiente salida:
A class method is called
B class method is called
Función polimórfica en Python
El siguiente programa muestra cómo usar funciones polimórficas en Python, que es un lenguaje de programación funcional.
class A(object):
def show(self):
print "A class method is called"
class B(A):
def show(self):
print "B class method is called"
def checkmethod(clasmethod):
clasmethod.show()
AObj = A()
BObj = B()
checkmethod(AObj)
checkmethod(BObj)
Producirá la siguiente salida:
A class method is called
B class method is called