parametric polymorphism

Üdvözlöm, Ön a parametric polymorphism szó jelentését keresi. A DICTIOUS-ban nem csak a parametric polymorphism szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a parametric polymorphism szót egyes és többes számban mondani. Minden, amit a parametric polymorphism szóról tudni kell, itt található. A parametric polymorphism szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. Aparametric polymorphism és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.

Főnév

parametric polymorphism (tsz. parametric polymorphisms)

  1. (informatika) Parametric polymorphism (paraméteres polimorfizmus) a polimorfizmus egy fajtája, amely lehetővé teszi, hogy függvények vagy osztályok többféle adattípuson működjenek, miközben a kód csak egyszer van megírva. Ez a generikus programozás alapja – például a C++ template mechanizmusa vagy Java generics rendszere.



🧠 Mi az a parametric polymorphism?

  • A “parametric” szó arra utal, hogy a viselkedés egy vagy több típusparaméterre van paraméterezve.
  • A kód nem függ konkrét típusoktól: a működése általános.
  • A különböző típusú adatokra ugyanaz a kód példányosítható, típusparaméterek behelyettesítésével.



🔍 Példák különböző nyelveken

✅ C++ (template segítségével)

template <typename T>
T maximum(T a, T b) {
    return (a > b) ? a : b;
}

Használat:

maximum(3, 7);           // int
maximum(3.14, 2.71);     // double
maximum("apple", "pear"); // const char*

Itt T a típusparaméter – ez a paraméteres polimorfizmus példája.



✅ Java (generics segítségével)

public class Box<T> {
    private T item;
    public void set(T item) { this.item = item; }
    public T get() { return item; }
}
Box<Integer> b1 = new Box<>();
Box<String> b2 = new Box<>();

A T típus bármilyen típussal helyettesíthető.



✅ Haskell (még általánosabb)

length ::  -> Int

A length függvény bármilyen típusú lista hosszát visszaadja – a lehet Int, Char, Bool, stb. Ez a tiszta paraméteres polimorfizmus példája.



📦 Hogyan különbözik más polimorfizmusoktól?

Típus Leírás
Parametric polymorphism A függvény/osztály típusparaméterekre általános
Subtype polymorphism (alapú típus) A függvények az alosztályok példányain is működnek (pl. C++ virtuális függvények, Java override)
Ad-hoc polymorphism Függvények különböző típusokra más implementációt kapnak (pl. overloading, type class instance)



🧰 Használata C++-ban

  • template<typename T> – típusparaméterek
  • STL konténerek (vector<T>, map<K, V>) is paraméteres polimorfizmust használnak
  • Kompatibilis constexpr, SFINAE, concepts eszközökkel



🧩 Előnyök

Előny Magyarázat
Kód újrahasznosítás Egyetlen általános megvalósítás több típusra
Típusbiztonság Fordítás idején történik típusellenőrzés
Olvashatóság Nincs szükség ismételt kódra minden típushoz



❌ Hátrányok

Hátrány Magyarázat
Nehezebb hibakeresés Bonyolult hibaüzenetek sablonpéldányosításkor (C++)
Fordítási idő Sok típuspéldányosítás lelassíthatja a buildet
Kódrobbanás Minden típuspéldány külön gépi kódot eredményezhet (C++)



🧪 Példák kombinálva

template <typename T>
class Pair {
public:
    T first, second;
    Pair(T a, T b) : first(a), second(b) {}
    T max() const { return (first > second) ? first : second; }
};
Pair<int> p1(1, 5);
Pair<double> p2(3.14, 2.71);

Mindkét Pair<T> típus ugyanazt a sablont használja, különböző típusparaméterrel – ez a paraméteres polimorfizmus.



🧠 TL;DR

Parametric polymorphism azt jelenti, hogy ugyanazt a kódot többféle típusra is használhatjuk, a típust paraméterként megadva. Ez a sablonok (template), generikus programozás, és funkcionális nyelvek egyik legfontosabb képessége.