Programowanie funkcjonalne - polimorfizm

Polimorfizm z punktu widzenia programowania oznacza wielokrotne wykorzystanie jednego kodu. Mówiąc dokładniej, jest to zdolność programu do przetwarzania obiektów w różny sposób w zależności od ich typu lub klasy danych.

Polimorfizm jest dwojakiego rodzaju -

  • Compile-time Polymorphism - Ten typ polimorfizmu można osiągnąć stosując metodę przeciążania.

  • Run-time Polymorphism - Ten typ polimorfizmu można uzyskać za pomocą nadpisywania metod i funkcji wirtualnych.

Zalety polimorfizmu

Polimorfizm ma następujące zalety -

  • Pomaga programiście w ponownym wykorzystaniu kodów, tj. Klasy raz napisane, przetestowane i zaimplementowane mogą być ponownie użyte w razie potrzeby. Oszczędza dużo czasu.

  • Pojedyncza zmienna może służyć do przechowywania wielu typów danych.

  • Łatwe debugowanie kodów.

Polimorficzne typy danych

Polimorficzne typy danych można zaimplementować za pomocą ogólnych wskaźników, które przechowują tylko adres bajtowy, bez typu danych przechowywanych pod tym adresem pamięci. Na przykład,

function1(void *p, void *q)

gdzie p i q to ogólne wskaźniki, które mogą się trzymać int, float (lub dowolną inną) wartość jako argument.

Funkcja polimorficzna w C ++

Poniższy program pokazuje, jak używać funkcji polimorficznych w C ++, który jest językiem programowania obiektowego.

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

Wytworzy następujący wynik -

A class method is called 
B class method is called

Funkcja polimorficzna w Pythonie

Poniższy program pokazuje, jak używać funkcji polimorficznych w Pythonie, który jest funkcjonalnym językiem programowania.

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)

Wytworzy następujący wynik -

A class method is called 
B class method is called