Multiple inheritance PEMROGRAMAN BERORIENTASI OBJEK

572 Direktorat Pembinaan SMK | 2008 }; class CTriangle: public CPolygon, public COutput { public: int area void { return width height 2 ; } }; int main { CRectangle rect; CTriangle trgl; rect.set_values 4 , 5 ; trgl.set_values 4 , 5 ; rect.output rect.area; trgl.output trgl.area; system PAUSE ; return EXIT_SUCCESS; } Keluaran program diatas adalah : 20 10

16.10. Polymorphism

Untuk mempelajari materi polimorfisme kita harus paham dulu terhadap penggunaan pointer dan inheritance. Coba anda pahami instruksi berikut, jika anda masih belum paham pelajari kembali materi terkait: int a::bc {}; Materi Class a ‐b Materi pointer class a: public b; Materi Relationships between classes

16.10.1. Pointers to Base Class

Salah satu keuntungan terbesar dalam menurunkan class adalah bahwa pointer ke class turunan merupakan tipe yang kompatibel dengan pointer ke class dasar. Bagian ini akan membahas kelebihan C++ dalam hal tersebut. Sebagai contoh kita akan menuliskan kembali program tentang persegi panjang dan segitiga dalam contoh sebelumnya dengan deklarasi pointer. Perhatikan contoh dibawah ini: Program 16.31 include iostream.h class CPolygon { 2008 | Direktorat Pembinaan SMK 573 protected: int width, height; public: void set_values int a, int b { width=a; height=b; } }; class CRectangle: public CPolygon { public: int area void { return width height; } }; class CTriangle: public CPolygon { public: int area void { return width height 2 ; } }; int main { CRectangle rect; CTriangle trgl; CPolygon ppoly1 = rect; CPolygon ppoly2 = trgl; ppoly1‐set_values 4 , 5 ; ppoly2‐set_values 4 , 5 ; cout Rectangle area = rect.area endl; cout Triangle area = trgl.area endl; system PAUSE ; return EXIT_SUCCESS; } Keluaran program diatas adalah sebagai berikut: Rectangle area = 20 Triangle area = 10 Fungsi main membuat dua pointer yang menunjuk ke objek dari class CPolygon, yakni ppoly1 dan ppoly2. Kedua pointer tersebut diinisialisasi dengan alamat objek rect dan trgl, dan karena pointer tersebut merupakan objek class turunan dari Cpolygon, maka inisialisasi ini benar. Pointer ppoly1 dan ppoly2 dideklarasikan dari base class. Inisialisasi dengan rect dan trgl valid, namun pointer ppoly1 dan ppoly2 tetap tidak dapat mengakses member CRectangle dan CTriangle.