Selasa, 30 April 2013

ringkasan dan cara penggunaan dari Polymorphism dan Inheritance pada kasus permasalahan yang sering terjadi

POLYMORPHISM
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.

 INHERITANCE

Pengertian Inheritance
• Inheritance merupakan salah satu dari tiga konsep dasar OOP.
• Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek / y dapat mempunyai entitas/obyek turunan.
• Dengan konsep inheritance, sebuah class dapat mempunyai class turunan.
• Suatu class yang mempunyai class turunan dinamakan parent class atau base class.
• Sedangkan class turunan itu sendiri seringkali disebut subclass atau child class.
Deklarasi Inheritance
• Dengan menambahkan kata kunci extends setelah deklarasi nama class, kemudian diikuti dengan nama parent classnya.
• Kata kunci extends tersebut memberitahu kompiler Java bahwa kita ingin melakukan perluasan class.
• Contoh :
public class B extends A { }
• Semua class di dalam Java adalah merupakan subclass dari class super induk yang bernama Object.
• Misalnya saja terdapat sebuah class sederhana :
public class A {

}
• Pada saat dikompilasi, Kompiler Java akan membacanya sebagai subclass dari class Object.
public class A extends Object {

}
Kapan kita menerapkan inheritance?
• Kita baru perlu menerapkan inheritance pada saat kita jumpai ada suatu class yang dapat diperluas dari class lain
Contoh programnya..
PersegiPanjang.java
class PersegiPanjang
{
double panjang;
double lebar;
PersegiPanjang(double panjang, double lebar) {
this.panjang = panjang;
this.lebar = lebar;
}

PersegiPanjang()
{
throw new UnsupportedOperationException(“Not yet implemented”);
}
double hitungLuas() {
return (panjang * lebar);
}
double getPanjang() {
return panjang;
}
double getLebar() {
return lebar;
}
}