Fransisca's Blog

blog buat tugas PBO..^^

polymorphism(ringkasan pertemuan 11)

Diposting oleh sisqa

Polymorphism adalah kemampuan object-object yang berbeda dalam sebuah class hiraiki untuk melakukan fungsi(behavior) unik terhadap suatu respon massage. Selain itu polymorphism adalah juga kemampuan class menyembunyikan implementasi yang berbeda dalam interface yang sama, polymorphisem juga memungkinkan method memiliki nama yang sama dengan tugas tugas yang berbeda. Tidak hanya itu, polymorphism juga memungkinkan suatu fungsi yang implementasi detailnya belum ada.

Polymorphism juga tergantung pada inheritance, karna dalam pembuatan polymorphism digunakanlah abstract class, yang bisa dibuat menjadi abstract class hanyalah base class dan tidak bisa dibuat instace dari base class tersebut.

Cara membuat abstract class aalah dengan membuat virtual function, yang bermanfaat agat virtual method table(VMT) yang menentukan type runtime object bukan programmer dengan statements switchnya, karna pada program besar statement switch akan sulit dimaintain.dengan menggunakan VMT akan menentukan tipe runtime dari object agar ketik membuat object, object akan secara dinamis dapat dipetakan secara strukturnya.

Polymorphism dibagi menjadi dua, yaitu:

1. Trivial polymorphism

Yaitu dengan menggunakan early binding yang menggunakan bahasa c style, dan function didefinisikan sebelum compiling, dan juga menggunakan link body function dan function header / prototype.

Pengimplementasiannya menggunakan function overloading, yaitu penggunaan kembali nama fungsi yang sama tapi dengan 3 ciri yang membedakannya, yaitu :

- Jumlah argument

- Letak argument

- Tipe argument

2. True polymorphism

Yaitu dengan menggunakan dynamic binding, yang merupakan implementasi dengan menggunakan C++ style, function definition juga dilakukan pada sat runtime, compiler yang membuat VMT untuk class yang mengandung polymorphism, jika derived class memiliki fungsi yang sama (overriding) dengan base class, VMT akan menunjuk ke base class function.

Pembuatannya dilakukan dengan menggunakan function overriding, yaitu fungsi yang namanya sama tapi tidak berada pada kelas yang sama. Hal ini diimplementasikan dengan virtual method yang dibagi menjadi 2, yaitu:

1. Pure virtual method, hanya mendeklarasikan function prototypes saja(tidak memiliki body function), class yang memiliki pure virtual method disebut abstrak class.

Instance / object tidak dapat dibuat dari suatu abstract class, karna masih ada function yang tidak memiliki function body.

Cirri dari pure virtual method adalah pada deklarasi ditulis fungsi() = 0.

Contoh:

class myclass

{

Virtual void tes() = 0;

};

2. Squasi virtual method, memiliki fungsi yang minimal harus dikerjakan oleh suatu method atau ada body function.

Contoh :

class myclass

{

virtual void tes()

{

Return 0;

}

};

Virtual destructor dan virtual constructor:

Constructor tidak dapat dibuat virtual

Sedangkan destructor dapat dibuat virtual, dengan cara:

Base class pointer menunjuk ke object turunan, jka didestroy dengan menggunakan delete, behavior tidak terspesifikasi.

Perbaikan sederhana, declare base class destructor virtual dengan demikian ketika delete digunakan, destructor tentu dijalankan

Ketika object class turunan di execute pertama kali, destructor class induk diexecute kemudian.

contoh programnya menyusul yach^.^

0 komentar:

Posting Komentar