You are here

Enheriten

Inheriten adalah turunan. Maksudnya di sini sebuah class bisa diturunkan dan turunannya itu mempunyai sifat-sifat yang sama dengan class asalnya. Sebelumnya, seperti pada penjelasan terdahulu kita akan membahas fungsi atau variabel yang dideklarasikan secara protect. Perhatikan contoh di bawah ini:

1:  class CTool
2:  {
3:  public:
4:      virtual int ToolType (int type) = 0;
5:  protected:
6:      int TypeOfTool;
7:  }
8:  class CHammer : public CTool;
9:  {
10: public:
11:     CHammer (int tool) {TypeOfTool = tool;}
12:     int ToolType(){return (TypeOfTool);}
13: };

Variable TypeOfTool yang dideklarasikan di class CTool diberi nilai di class CHammer dan tidak bisa mengubah variabel itu. Nilai yang telah dimasukkan itu hanya bisa dipanggil kembali dengan menggunakan fungsi ToolType(). Sekarang udah tau kan perbedaan protect dengan private?

Perhatikan cara penurunan class CTool ke CHammer. Dengan menggunakan titik dua satu kali bukan dua. Lalu apa guna inheriten? Semua class turunan mempunyai sifat-sifat yang sama dengan class asalnya. Nah, hasil turunannya inilah yang dikembangkan dengan cara menambah fungsi atau variabel baru atau membuat prosedur/variabel public yang sama dengan asalnya sehingga variabel dari class asalnya tidak digunakan (override).

Gua punya contoh yang bagus tentang inheriten (pas persentasi juga peke contoh ini). Tapi berhubung panjang, jadi contohnya dibuat dihalaman baru yach, tapi penjelasannya tetap di sini. Contoh Program dengan Penerapan Konsep Penurunan

Baris ke-8 sampai 18 adalah kelas asalnya (kita sebut aja kelas induk biar gampang). Class Car (baris 20-28) dan class Truck (baris 30-38) adalah turunan dari class Vehicle. Sekarang perhatikan baris 25. Di sana dideklarasikan "void Print() const;" padahal pada baris ke 12 di class induknya telah di deklarasikan hal yang sama. Hal inilah yang disebut override, jadi yang berlaku adalah fungsi "Print() const;" pada baris 12. Masih ingat kan contoh di Pengenalan OOP, bahwa salah satu contoh inheriten adalah perseneling otomatis pada mobil. Dengan mengubah dari perseneling manual ke otomatis, tidak berarti seluruh kendaraan diubah. Hanya bagian tertentu saja yang diubah, yang lainnya dipertahankan.

Sekarang baris ke 27. Di deklarasikan satu variabel baru lagi "char category" sebagai protect. Ini sama dengan contoh di Pengenalan OOP, jika dulu jam tangan hanya menunjukkan jam saja tetapi sekarang dengan jam tangan kita bisa mengetahui tanggal berapa sekarang. Itu artinya ada penambahan sesuatu yang baru tetapi tidak membentuknya dari awal (kan percuma kalo turunan, tapi gak ada perubahan).

Yup, kelar juga pembahasan tentang Inheriten. Ada tambahan nih... pas ngebahas enkapsulasi kan pernah disinggung friend class. Mau yang gimana tu jenisnya? Perhatikan contoh di bawah ini:

1:  class CDog : public CDomestic
2:  {
3:  public:
4:    CDog (char *breed);
5:    ~CDog ();
6:    char *GetBreed () {return(m_breed);};
7:  private:
8:    char *m_breed;
9:  };
10: class CFireHydrant
11: {
12: public:
13:   FireHydrant (int height, int plugs. int type)
14:   {
15:      m_height = height;
16:      m_plugs = plugs;
17:      m_type = type;
18:   }
19:   ~FireHydrant();
20: private:
21:   int m_height, m_plugs, m_type;
22:   friend CDog;
23: };

Gak usah dipikirin gimana isi CDomestic, tapi perhatikan saja baris ke 22 "friend CDog". Dengan mendeklarasikan seperti itu, CDog berhak menggunakan variabel dan fungsi yang ada di CFireHydrant. Tapi ingat, hal sebaliknya gak bisa terjadi CFireHydrant hanya bisa menggunakan yang dideklarasikan secara public.

Ok deh, selesai.... Untuk pembahasan selanjutnya banyak sekali hal-hal baru yang akan digunakan. Seperti pointer, fungsi virtual, dll. Tapi itu semua gak dibahas, gua harap kalian udah nguasain yang gituan. OK?

klik di sini untuk melihat contoh program lain yang menggunakan penurunan

Regards,

dj