• Tidak ada hasil yang ditemukan

LECTURE NOTES T Algoritma dan Metode Object Oriented Programming Week 9 Polymorphism

N/A
N/A
Protected

Academic year: 2021

Membagikan "LECTURE NOTES T Algoritma dan Metode Object Oriented Programming Week 9 Polymorphism"

Copied!
11
0
0

Teks penuh

(1)

LECTURE NOTES

T0456 - Algoritma dan Metode

Object Oriented Programming

Week 9

(2)

LEARNING OUTCOMES

1. Peserta diharapkan mampu menguraikan konsep trivial polymorphism dan true

polymorphism

2. Peserta diharapkan mampu mendemonstrasikan hubungan antara abstract class dengan

virtual functions (polymorphism).

OUTLINE MATERI (Sub-Topic):

1. Definisi dan Penggunaan Polymorphism 2. Early and Late Binding

3. Trivial Polymorphism 4. True Polymorphism 5. Virtual Method 6. Abstract Class

(3)

ISI MATERI

Definisi dan Penggunaan Polymorphism

Berdasarkan kata pembentuknya, polymorphism dapat dipisah menjadi poly dan morph serta

ism. Poly artinya banyak, morph artinya bentuk dan ism artinya konsep. Secara kata per

kata polymorphism berarti konsep bentuk banyak.

Polymorphism memungkinkan sebuah method dengan nama sama tapi memiliki aksi atau

tugas berbeda. Sebuah objek yang memanggil method tadi, akan menjalankan tugas berbeda-beda tergantung pada aksi yang dipakai oleh method tersebut.

Polymorphism memungkinkan programmer membangun fungsi tanpa implementsi. Isi fungsi

belum ditulis.

Ada dua tipe polymorphism: - trivial polymorphism - true polymorphism

Trivial polymorphism menggunakan overloading functions. Overloading functions memiliki

parameter berbeda. Sedangkan true polymorphism menggunakan overriding function.

Overriding functions memiliki nama sama dan parameter sama tapi berada di dua class

berbeda yang terlibat dengan concept of inheritance. True polymorphism memungkinkan

(4)

Gambar 1: Overloading dan Overriding Functions

Early and Late Binding

Pada kompilasi pemrograman konvensional, compiler menterjemahkan source code ke dalam bentuk object file (.obj), kemudian linker menyatukan fungsi-fungsi yang dimiliki oleh program kepada library. Karena proses tersebut terjadi pada saat kompilasi, maka proses ini disebut early binding.

Pada early binding, penetapan definisi fungsi dilakukan pada saat kompilasi. Sebuah link yang tetap sudah tercipta pada saat kompilasi antara function header dan function content. Oleh karena itu dapat dikatakan bahwa definisi fungsi yang dieksekusi ditentukan oleh

(5)

Gambar 2: Early Binding

Late binding memungkinkan aksi yang dilakukan sebuah fungsi ditentukan pada saat

program dieksekusi sesuai dengan kebutuhan pengguna. Late binding hanya dimungkinkan dengan adanya virtual method dan overriding function.

Tidak seperti early binding, pada late binding definisi fungsi ditentukan oleh pengguna. Definisi fungsi tergantung pada aksi pengguna.

Pada Gambar 3, pengguna memilih pilihan 1 atau 2. Pilihan 1 menciptakan objek dari class D1. Pilihan 2 menciptakan objek dari class D2. Definisi function() ditentukan oleh pilihan pengguna.

Gambar 3: Late Binding

Pada saat kompilasi, compiler membuat Virtual Method Table untuk setiap class yang memiliki virtual method. Tabel ini berisi semua virtual method dalam sebuah class. Virtual

method memiliki keywort virtual. Virtual method dipilih pada saat running time.

(6)

Trivial Polymorphism (pseudo polymorphism) adalah bentuk mudah yang bisa

diimplementasikan tanpa memerlukan technique of encapsulation dan inheritance.

Implementasi trivial polymorphism dalam bahasa C++ dilakukan dengan function

overloading dan operator overloading.

True Polymorphism

True polymorphism memerlukan teknik encapsulation dan inheritance. True polymorphism

memungkinkan penggunaan fungsi generik yang mampu menangani objek baru yang diciptakan sewaktu program sedang berjalan dengan menggunakan teknik inheritance. True

polymorphism diimplemetasikan dengan menggunakan virtual method dan overriding function.

Contoh true polymorphism:

class Shape{ public:

void show(){ cout<<“Shape”; };

virtual void draw(){ cout<<“Shape”; };

}

class Triangle: public Shape{ public: void show(){ cout<<“Triangle”; }; void draw(){ cout<<“Triangle”; }; } void main{ Shape *ptr; Triangle Obj;

(7)

ptr = &Obj;

ptr->show(); //Shape ptr->draw(); //Triangle }

Virtual Method

Sebuah method disebut virtual method jika ada keyword virtual di depannya. Virtual method bekerja dengan melibatkan overridding function. Overridding functions memiliki deklarasi fungsi sama tapi berada pada dua classes yang terlibat inheritance.

Jika sebuah class memiliki virtual method, maka compiler menciptakan virtual method table (VMT) khusus untuk class tersebut.

Ada dua jenis virtual methods yaitu squasi virtual method dan pure virtual method. Squasi

virtual method memiliki function body.

Contoh:

virtual void draw() {;}

Pure virtual method adalah fungsi yang tidak memiliki function body. Function body diganti

dengan simbol =0; Contoh:

virtual void draw() =0;

Constructor tidak bisa virtual tapi destructor bisa virtual.

Contoh pure virtual method:

class Shape{ public:

virtual void draw() = 0; }

class Triangle: public Shape{ public: void draw(){ cout<<“Triangle”; }; } void main{ Shape *ptr;

(8)

Triangle Obj; Ptr = &Obj;

//Shape Obj; ERROR }

Abstract Class

Sebuah class disebut abstract class jika memiliki paling sedikit satu pure virtual method. Objek tidak bisa didekarasikan dengan menggunakan abstract class. Abstract class dapat digunakan untuk mendeklarasikan reference object dan pointer object.

Contoh:

class FIGURE { public:

virtual double area()=0; //pure virtual virtual void inputData()=0;

(9)

SIMPULAN

Polymorphism memungkinkan sebuah method dengan nama sama tapi memiliki aksi atau

tugas berbeda. Sebuah objek yang memanggil method tadi, akan menjalankan tugas berbeda-beda tergantung pada aksi yang dipakai oleh method tersebut.

Polymorphism memungkinkan programmer membangun fungsi tanpa implementsi. Isi fungsi

belum ditulis.

Ada dua tipe polymorphism yaitu trivial polymorphism dan true polymorphism. Trivial

polymorphism menggunakan overloading functions. Overloading functions memiliki

parameter berbeda. Sedangkan true polymorphism menggunakan overriding function.

Overriding functions memiliki nama sama dan parameter sama tapi berada di dua class

berbeda yang terlibat dengan concept of inheritance. True polymorphism memungkinkan

class memiliki fungsi tanpa isi.

Pada kompilasi pemrograman konvensional, compiler menterjemahkan source code ke dalam bentuk object file (.obj), kemudian linker menyatukan fungsi-fungsi yang dimiliki oleh program kepada library. Karena proses tersebut terjadi pada saat kompilasi, maka proses ini disebut early binding.

Pada early binding, penetapan definisi fungsi dilakukan pada saat kompilasi. Sebuah link yang tetap sudah tercipta pada saat kompilasi antara function header dan function content. Oleh karena itu dapat dikatakan bahwa definisi fungsi yang dieksekusi ditentukan oleh

programmer.

Late binding memungkinkan aksi yang dilakukan sebuah fungsi ditentukan pada saat

program dieksekusi sesuai dengan kebutuhan pengguna. Late binding hanya dimungkinkan dengan adanya virtual method dan overriding function.

Tidak seperti early binding, pada late binding definisi fungsi ditentukan oleh pengguna. Definisi fungsi tergantung pada aksi pengguna.

Pada saat kompilasi, compiler membuat Virtual Method Table untuk setiap class yang memiliki virtual method. Tabel ini berisi semua virtual method dalam sebuah class. Virtual

(10)

Trivial Polymorphism (pseudo polymorphism) adalah bentuk mudah yang bisa

diimplementasikan tanpa memerlukan technique of encapsulation dan inheritance.

Implementasi trivial polymorphism dalam bahasa C++ dilakukan dengan function

overloading dan operator overloading.

True polymorphism memerlukan teknik encapsulation dan inheritance. True polymorphism

memungkinkan penggunaan fungsi generik yang mampu menangani objek baru yang diciptakan sewaktu program sedang berjalan dengan menggunakan teknik inheritance. True

polymorphism diimplemetasikan dengan menggunakan virtual method dan overriding function.

Sebuah method disebut virtual method jika ada keyword virtual di depannya. Virtual method bekerja dengan melibatkan overridding function. Overridding functions memiliki deklarasi fungsi sama tapi berada pada dua classes yang terlibat inheritance.

Jika sebuah class memiliki virtual method, maka compiler menciptakan virtual method table (VMT) khusus untuk class tersebut.

Ada dua jenis virtual methods yaitu squasi virtual method dan pure virtual method. Squasi

virtual method memiliki function body.

Pure virtual method adalah fungsi yang tidak memiliki function body. Function body diganti

dengan simbol =0;

Constructor tidak bisa virtual tapi destructor bisa virtual.

Sebuah class disebut abstract class jika memiliki paling sedikit satu pure virtual method. Objek tidak bisa didekarasikan dengan menggunakan abstract class. Abstract class dapat digunakan untuk mendeklarasikan reference object dan pointer object.

(11)

DAFTAR PUSTAKA

1. Deitel & Deitel. (2010). C++ How To Program. 7th Edition. Prentice Hall Intern. New Jersey. ISBN:0-13-246540-X, Chapter 13

Gambar

Gambar 1: Overloading dan Overriding Functions
Gambar 2: Early Binding

Referensi

Dokumen terkait