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