Programação Funcional - Polimorfismo
Polimorfismo, em termos de programação, significa reutilizar um único código várias vezes. Mais especificamente, é a capacidade de um programa de processar objetos de maneira diferente, dependendo de seu tipo ou classe de dados.
O polimorfismo é de dois tipos -
Compile-time Polymorphism - Este tipo de polimorfismo pode ser obtido usando a sobrecarga do método.
Run-time Polymorphism - Este tipo de polimorfismo pode ser obtido usando a substituição de métodos e funções virtuais.
Vantagens do polimorfismo
O polimorfismo oferece as seguintes vantagens -
Ajuda o programador a reutilizar os códigos, ou seja, as classes, uma vez escritas, testadas e implementadas, podem ser reutilizadas conforme necessário. Economiza muito tempo.
Uma única variável pode ser usada para armazenar vários tipos de dados.
Fácil de depurar os códigos.
Tipos de dados polimórficos
Os tipos de dados polimórficos podem ser implementados usando ponteiros genéricos que armazenam um endereço de byte apenas, sem o tipo de dados armazenado naquele endereço de memória. Por exemplo,
function1(void *p, void *q)
Onde p e q são indicadores genéricos que podem conter int, float (ou qualquer outro) valor como argumento.
Função polimórfica em C ++
O programa a seguir mostra como usar funções polimórficas em C ++, que é uma linguagem de programação orientada 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;
}
Ele produzirá a seguinte saída -
A class method is called
B class method is called
Função polimórfica em Python
O programa a seguir mostra como usar funções polimórficas em Python, que é uma linguagem de programação 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)
Ele produzirá a seguinte saída -
A class method is called
B class method is called