Static dan Dynamic Dispatch


Sekilas mengenai Static dan Dynamic Dispatch pada Pemrograman Komputer

Written by Achmad Rizal Muttaqin on Wednesday January 18, 2017
- Comments
Achmad Rizal Muttaqin

Para 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
comments powered by Disqus

— Copyright © 2017 PT. Comestoarra Bentarra Noesantarra —