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