Pada Inheritance yang pertama, saya membahas tentang single inheritance. Pada bagian ini, saya akan membahas tentang multiple inheritance. Multiple Inheritance adalah sebuah kelas yang diturunkan dari beberapa kelas induk. Kelas turunan tersebut mewarisi karakteristik-karakteristik yang dimiliki oleh kelas-kelas induknya. Setiap kelas induk yang akan mewarisi karakteristiknya, dipisahkan dengan tanda koma(,) dan masing-masing kelas induk harus didahului dengan jenis aksesnya terlebih dahulu (private, protected, public).
Contoh:
class Pegawai
{ protected:
char NIP[10], Nama[30];
};
class Pendidikan
{ protected:
char Tingkat[20], Sekolah[80];
};
class Manajer : public Pegawai, public Pendidikan //Multiple Inheritance
{ private:
char Titel[20], Telpon[20];
};
class Peneliti : public Pegawai, public Pendidikan //Multiple Inheritance
{ private:
int Publikasi;
};
class Satpam : public Pegawai //Single Inheritance
{ };
Construcor dan Destructor pada Kelas Turunan
Constructor untuk kelas turunan perlu dibuat untuk melakukan inisialisasi kelas itu sendiri dan kelas induknya. Jika Constructor kelas induk memiliki parameter (argument), maka parameter Constructor kelas induk tersebut harus dimasukkan dalam Constructor kelas turunan. Destructor kelas turunan dijalankan dengan urutan yang terbalik dengan urutan Constructor, yaitu Destructor kelas turunan dijalankan terlebih dahulu baru destructor kelas induknya. Apabila kelas turunan memiliki lebih dari satu klas induk, setelah menjalankan destructor kelas turunan kemudian destructor kelas induk terakhir dijalankan sampai destructor kelas induk pertama dijalankan (sesuai dengan urutan terbalik dari penurunan kelas-kelas induk di dalam definisi kelas turunan tersebut).
Selasa, 15 Desember 2009
Rabu, 09 Desember 2009
Inheritance
Inherintance adalah proses pembentukan satu kelas baru (derived class) dari kelas lainnya (based class). Inheritance merupakan salah satu ciri dari object oriented programming. Dengan adanya inheritance, hal ini memungkinkan hal yang disebut dengan reusability (pendauran ulang suatu class agar dapat digunakan lagi di kedepannya). Kelas turunan mewarisi semua kemampuan yang dimiliki oleh kelas induk nya, dari data members maupun methods yang dideklarasikan dengan public atau protected (apabila private, maka tidak akan didapatkan oleh kelas turunan). Hubungan antar kelas turunan dan kelas induknya akan membentuk suatu hirarki kelas. Dalam OOP, perancangan hirarki kelas merupakan hal yang utama.
Ada 2 jenis inheritance, yaitu single inheritance dan multiple inheritance. Single berarti 1 kelas induk menhasilkan 1 atau lebih kelas turunan. Sedangkan multiple berarti 2 atau lebih kelas induk menhasilkan 1 atau lebih kelas turunan.
Pada perancangan hirarki kelas, kelas induk merupakan kelas yang mempunyai sifat (property) yang paling umum atau yang harus dimiliki oleh seluruh kelas turunannya. Sedangkan sifat yang khusus dimiliki oleh kelas-kelas turunannya, dimana sifat-sifat khusus tersebut digunakan untuk meningkatkan sifat atau kemampuan dari kelas induknya.
Contoh single inheritance:
class Mobil
{ protected: int roda;
};
class Kijang : public Mobil
{ protected: char tipe[20];
};
Anggota kelas induk dapat diakses hanya oleh anggota kelas turunan apabila jenis akses dari anggota kelas induk adalah public atau protected (private tidak dapat diakses).
Anggota protected suatu kelas tetap tidak dapat diakses oleh fungsi / kelas lainnya dalam program yang tidak menjadi anggota kelas turunan tersebut.
Ada 2 jenis inheritance, yaitu single inheritance dan multiple inheritance. Single berarti 1 kelas induk menhasilkan 1 atau lebih kelas turunan. Sedangkan multiple berarti 2 atau lebih kelas induk menhasilkan 1 atau lebih kelas turunan.
Pada perancangan hirarki kelas, kelas induk merupakan kelas yang mempunyai sifat (property) yang paling umum atau yang harus dimiliki oleh seluruh kelas turunannya. Sedangkan sifat yang khusus dimiliki oleh kelas-kelas turunannya, dimana sifat-sifat khusus tersebut digunakan untuk meningkatkan sifat atau kemampuan dari kelas induknya.
Contoh single inheritance:
class Mobil
{ protected: int roda;
};
class Kijang : public Mobil
{ protected: char tipe[20];
};
Anggota kelas induk dapat diakses hanya oleh anggota kelas turunan apabila jenis akses dari anggota kelas induk adalah public atau protected (private tidak dapat diakses).
Anggota protected suatu kelas tetap tidak dapat diakses oleh fungsi / kelas lainnya dalam program yang tidak menjadi anggota kelas turunan tersebut.
Selasa, 01 Desember 2009
Array & Pointer of Class
Array pada C++ tidak terdapat range checking sehingga apabila kita compile, tidak akan ada error/warning sama sekali, tetapi ketika kita melakukan pengisian lebih dari array yang telah disediakan, maka akan terjadi error. Dan juga dalam penggunaannya, kita tidak dapat mengbandingkan yang 1 dengan yang lainnya (kecuali menggunakan function yang telah ada atau membandingkan isi array 1 demi 1) dan juga kita tidak dapat mengisi array secara langsung semuanya (harus mengisi 1 demi 1).
Sedangkan apabila kita mengimplemantasikan Array pada Class, maka akan dilakukan range checking terlebih dahulu. Jadi apabila terdapat isi array yang lebih, pada waktu dicompile akan terjadi warning/error. Dengan penggunaan Array pada Class, maka array dapat langsung dibandingkan dengan yang lainnya.
Pada implementasi Array pada class, juga dapat digunakan copy constructor agar dapat mengcopy object yang dibutuhkan.
Implementasi Pointer pada Class, apabila kita menggunakan Array, maka tempat yang disediakan akan terbatas sesuai dengan yang sudah kita alokasikan, tetapi apabila kita menggunakan pointer, kita dapat menggunakan sesuai kebutuhan kita. Alokasi memory pada array adalah static (sesuai dengan yang dialokasikan pada awal, apabila kurang, kita harus mengalokasikan lebih pada awalnya), sedangkan pada pointer alokasinya adalah dynamic (di mana alokasi memory sesuai dengan yang kita butuhkan).
Contoh implementasi pointer pada Class:
#include
class First
{ public:
int value;
First() {value = 0;}
int GetValue() {return value;}
};
class Second
{ int id;
public:
First *obj1;
Second() {id = 0;}
int GetName(){ return id;}
};
int main()
{ Second Obj2;
int num;
num = Obj2.GetName();
return 0;
}
Sedangkan apabila kita mengimplemantasikan Array pada Class, maka akan dilakukan range checking terlebih dahulu. Jadi apabila terdapat isi array yang lebih, pada waktu dicompile akan terjadi warning/error. Dengan penggunaan Array pada Class, maka array dapat langsung dibandingkan dengan yang lainnya.
Pada implementasi Array pada class, juga dapat digunakan copy constructor agar dapat mengcopy object yang dibutuhkan.
Implementasi Pointer pada Class, apabila kita menggunakan Array, maka tempat yang disediakan akan terbatas sesuai dengan yang sudah kita alokasikan, tetapi apabila kita menggunakan pointer, kita dapat menggunakan sesuai kebutuhan kita. Alokasi memory pada array adalah static (sesuai dengan yang dialokasikan pada awal, apabila kurang, kita harus mengalokasikan lebih pada awalnya), sedangkan pada pointer alokasinya adalah dynamic (di mana alokasi memory sesuai dengan yang kita butuhkan).
Contoh implementasi pointer pada Class:
#include
class First
{ public:
int value;
First() {value = 0;}
int GetValue() {return value;}
};
class Second
{ int id;
public:
First *obj1;
Second() {id = 0;}
int GetName(){ return id;}
};
int main()
{ Second Obj2;
int num;
num = Obj2.GetName();
return 0;
}
Langganan:
Komentar (Atom)