Dynamiczne wiązanie metod

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

Co to jest dynamiczne wiązanie metod?

Dynamiczne wiązanie metod oznacza, że decyzja, która wersja metody zostanie uruchomiona, zapada w czasie działania programu, a nie podczas kompilacji.

Mechanizm ten jest typowy dla programowania obiektowego i jest ściśle związany z metodami wirtualnymi oraz polimorfizmem.

Po co stosuje się dynamiczne wiązanie?

Dynamiczne wiązanie pozwala wywołać metodę klasy pochodnej przez wskaźnik lub referencję do klasy bazowej. Dzięki temu program może działać elastycznie na różnych typach obiektów, traktując je przez wspólny interfejs.

Przykład w C++

#include <iostream>
using namespace std;

class Zwierze {
public:
    virtual void dajGlos() {
        cout << "Dzwiek zwierzecia" << endl;
    }
};

class Pies : public Zwierze {
public:
    void dajGlos() override {
        cout << "Hau" << endl;
    }
};

int main() {
    Zwierze* z = new Pies();
    z->dajGlos(); // wyświetli: Hau
    delete z;
}

Mimo że zmienna z ma typ Zwierze*, program uruchamia metodę dajGlos() z klasy Pies, ponieważ metoda w klasie bazowej została oznaczona jako virtual.

Dynamiczne a statyczne wiązanie

  • Statyczne wiązanie — wybór metody następuje podczas kompilacji.
  • Dynamiczne wiązanie — wybór metody następuje podczas wykonywania programu.

Najważniejsze na egzamin

Metody wirtualne służą przede wszystkim do umożliwienia dynamicznego wiązania metod w czasie wykonania programu. Dzięki temu można uzyskać polimorficzne zachowanie obiektów.