Sekilas mengenai Static dan Dynamic Dispatch pada Pemrograman Komputer
Written by Achmad Rizal Muttaqin on Wednesday January 18, 2017Para pembaca yang budiman, kali ini saya akan share sedikit informasi mengenai istilah Static dan Dynamic Dispatch pada pemrograman komputer. Dispatch merupakan istilah untuk memanggil suatu fungsi dari suatu class tertentu. Static Dispatch adalah pemanggilan member fungsi yang informasinya telah diketahui semuanya pada saat kompilasi. Berikut contoh ilustrasi untuk Static Dispatch pada bahasa pemrograman C++.
// Kode Program
// Bahasa Pemrograman C++
#include <iostream>
class A {
public:
void f() const {std::cout << "A::f()" << std::endl;}
};
class B {
public:
void f() const {std::cout << "B::f()" << std::endl;}
};
int main() {
A a;
B b;
a.f();
b.f();
return 0;
}
Program 1
Pada kode program 1, compiler (program untuk melakukan kompilasi) sudah dapat mengetahui fungsi f() dari class mana yang dipanggil di setiap contoh. Pada pemanggilan fungsi f() yang pertama, fungsi A::f() yang dipanggil, dan pada pemanggilan fungsi f() yang kedua, fungsi B::f() yang dipanggil.
Adapun untuk Dynamic Dispatch, fungsi mana yang akan dipanggil tidak dapat ditentukan sampai saat kode program dijalankan (runtime). Berikut contoh ilustrasi dalam bahasa pemrograman C++ untuk Dynamic Dispatch.
// Kode Program
// Bahasa Pemrograman C++
#include <iostream>
class base {
public:
virtual void f() const = 0;
virtual ~base() {}
};
class A : public base {
public:
virtual void f() const {std::cout << "A::f()" << std::endl;}
};
class B : public base {
public:
virtual void f() const {std::cout << "B::f()" << std::endl;}
};
void dispatch(const base &x) {
x.f();
}
int main() {
A a;
B b;
dispatch(a);
dispatch(b);
return 0;
}
Program 2
Pada kode program 2, baris kode x.f() dieksekusi sebanyak dua kali, tapi fungsi yang berbeda dipanggil untuk setiap contohnya. Semoga bermanfaat
https://bytes.com/topic/c/answers/578257-static-vs-dynamic-dispatch