Programmazione Funzionale - Polimorfismo

Il polimorfismo, in termini di programmazione, significa riutilizzare più volte un unico codice. Più specificamente, è la capacità di un programma di elaborare gli oggetti in modo diverso a seconda del tipo di dati o della classe.

Il polimorfismo è di due tipi:

  • Compile-time Polymorphism - Questo tipo di polimorfismo può essere ottenuto utilizzando il sovraccarico del metodo.

  • Run-time Polymorphism - Questo tipo di polimorfismo può essere ottenuto utilizzando l'override del metodo e le funzioni virtuali.

Vantaggi del polimorfismo

Il polimorfismo offre i seguenti vantaggi:

  • Aiuta il programmatore a riutilizzare i codici, cioè le classi una volta scritte, testate e implementate possono essere riutilizzate secondo necessità. Risparmia molto tempo.

  • Una singola variabile può essere utilizzata per memorizzare più tipi di dati.

  • Facile eseguire il debug dei codici.

Tipi di dati polimorfici

I tipi di dati polimorfici possono essere implementati utilizzando puntatori generici che memorizzano solo un indirizzo di byte, senza il tipo di dati archiviati in quell'indirizzo di memoria. Per esempio,

function1(void *p, void *q)

dove p e q sono puntatori generici che possono contenere int, float (o qualsiasi altro) valore come argomento.

Funzione polimorfica in C ++

Il seguente programma mostra come utilizzare le funzioni polimorfiche in C ++, che è un linguaggio di programmazione orientato agli oggetti.

#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; 
}

Produrrà il seguente output:

A class method is called 
B class method is called

Funzione polimorfica in Python

Il seguente programma mostra come utilizzare le funzioni polimorfiche in Python, che è un linguaggio di programmazione funzionale.

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)

Produrrà il seguente output:

A class method is called 
B class method is called