Polimorfizm w programowaniu obiektowym

Słownik kwalifikacji INF.04 - Projektowanie, programowanie i testowanie aplikacji

Czym jest polimorfizm?

Polimorfizm to cecha programowania obiektowego, która pozwala traktować różne obiekty w jednolity sposób, a jednocześnie wykonywać ich własne wersje metod.

Nazwa pochodzi od greckich słów oznaczających „wiele form”. W praktyce oznacza to, że ta sama metoda może zachowywać się inaczej w zależności od typu obiektu.

Przykład zastosowania

Załóżmy, że istnieje klasa bazowa Figura oraz klasy pochodne Kolo i Prostokat. Każda figura może mieć metodę obliczPole(), ale sposób obliczenia pola zależy od konkretnej figury.

class Figura {
public:
    virtual double obliczPole() = 0;
};

class Kolo : public Figura {
public:
    double obliczPole() override {
        return 3.14 * 5 * 5;
    }
};

Dzięki polimorfizmowi można przechowywać różne figury np. w jednej kolekcji i wywoływać na nich tę samą metodę obliczPole().

Związek z metodami wirtualnymi

W C++ polimorfizm dynamiczny uzyskuje się najczęściej przez:

  • dziedziczenie,
  • metody wirtualne,
  • przesłanianie metod w klasach pochodnych,
  • wywołania przez wskaźnik lub referencję do klasy bazowej.

Dlaczego polimorfizm jest ważny?

Polimorfizm ułatwia rozbudowę programu. Można dodać nową klasę pochodną bez zmieniania kodu, który korzysta z klasy bazowej.

Najważniejsze na egzamin

Metody wirtualne są jednym z podstawowych mechanizmów realizacji polimorfizmu. Umożliwiają wybranie właściwej wersji metody w czasie działania programu.