Polümorfism (informaatika)

Allikas: Vikipeedia

Polümorfism on tehnika, mille puhul on võimalik kasutada sama koodi ja funktsioone erinevate andmetüüpidega, mille tulemuseks on rohkem üldised ning abstraktsed implementatsioonid.

Polümorfismi võib esineda nii funktsioonide puhul kui ka andmetüüpide korral:

Polümorfne funktsioon 
funktsioon mida saab kutsuda välja erinevate andmetüüpidega või mis väljastab erinevaid andmetüüpe
Polümorfne andmetüüp 
andmetüüp mille tüüp on spetsifitseerimata või mis võib osutuda teiseks andmetüübiks kui näidatud


On olemas põhimõtteliselt kahte tüüpi polümorfismi:

  • Kui kasutatavate andmetüüpide hulk on lõplik ja nende kombinatsioonid tuleb määratleda enne kasutamist, nimetatakse seda oodatud polümorfismiks (ad-hoc).
  • Kui kogu lähtekood on kirjutatud ilma konkreetsele tüüpidele viitamata ja seega võib seda kasutada suvaliste uute andmetüüpidega, nimetatakse seda parametriseeritud polümorfismiks (parametric).

Viimase mooduse abil programmeerimist nimetatakse üldistavaks programmeerimiseks (generic programming).


Näide[muuda | redigeeri lähteteksti]

Selles C++ näites on printStuff polümorfne funktsioon, mis väljastab klass Base-st päritud andmetüübi väärtuse sõltumata sellest mis on ta reaalne andmetüüp.

class Base {
  public:
   virtual void print() = 0;
};
class Integer : public Base { public: virtual void print() { /* print Integer */ } };
class Float : public Base { public: virtual void print() { /* print Float */ } };
void printStuff(Base& obj) { obj.print(); }
int main() { Integer i; Float f; printStuff(i); printStuff(f); }