Selasa, 22 September 2009

Polymorphism

Sebagai ciri khas dari program c++ , ini adalah penjelasan dari polymorphism.

Di fungsi utama, diciptakan 2 pointer yang menunjuk pada objek suatu kelas.
CPolygon (ppoly1 and ppoly2). Lalu direferebsikan ke rect dan trgl ke pointer yang tadi. Karena keduanya merupakan kelas dari objek dari CPolygon, keduanya valid untuk
dijalankan.

Limit dalam penggunaan *ppoly1 and *ppoly2 sebagai ganti rect and
trgl adalah kedua *ppoly1 and *ppoly2 merupakan tipe CPolygon* dan
hanya bisa menggunankan pointer tersebut untuk menunjuk ke anggota
CRectangle and CTriangle yang diambil dari CPolygon. Karena itu saat
memanggil anggota area() di akhir program harus menggunakan nama objek
rect and trgl dibanding menggunakan pointer *ppoly1 and *ppoly2.

Untuk menggunakan area() dengan pointer menunjuk kelas CPolygon, anggotanya
harus dideklarasikan pada kelas CPolygon, tapi masalahnya CRectangle serta
CTriangle mengimplementasikan versi area yang berbeda, makanya tidak bisa diimplementasikan di kelas yang sama.


Contoh :

class CPolygon {
protected:
int width, height;
public:
void set_values (int a, int b)
{ width=a; height=b; }
virtual int area ()
{ return (0); }
};

class CRectangle: public CPolygon {
public:
int area ()
{ return (width * height); } ----- versi area yang berbeda
};

class CTriangle: public CPolygon {
public:
int area ()
{ return (width * height / 2); } ----- versi area yang berbeda
};

int main () {
CRectangle rect;
CTriangle trgl;
CPolygon poly;
CPolygon * ppoly1 = ▭
CPolygon * ppoly2 = &trgl;
CPolygon * ppoly3 = &poly;
ppoly1->set_values (4,5);
ppoly2->set_values (4,5);
ppoly3->set_values (4,5);
cout <<>area() <<>
cout <<>area() <<>
cout <<>area() <<>
return 0;
}

0 komentar:

Posting Komentar