TAMBAHAN MATERI BAB 15 – BUKU DIKLAT PEMROGRAMAN KOMPUTER 2 1.
Class Inheritance / Kelas Turunan / Pewarisan Sifat Objek
Hak Akses pada kelas turunan: Apabila diturunkan Public dari kelas Induknya maka: • Bagian public pada kelas induk tetap akan menjadi bagian public padakelas turunannya. • Bagian protected yang terdapat pada kelas induknya tetap akan menjadi bagian protected pada kelas turunannya. • Bagian private yang terdapat pada kelas induk tetap tidak dapat diakses oleh turunannya. Apabila kelas diturunkan sebagai Private dari kelas Induknya, maka: • Bagian public yang terdapat pada kelas induk akan menjadi bagian private pada kelas turunannya. • Bagian protected yang terdapat pada kelas induk akan menjadi bagian private pada kelas turunannya. • Bagian private yang terdapat pada kelas induk tetap tidak dapat diakses oleh kelas turunannya. Contoh Program 1: #include
using namespace std; // Membuat kelas dasar dengan nama INDUK class INDUK { int X; public: void SetX(int XX) { X = XX; } int GetX() { return X; } }; // Membuat kelas TURUNAN1 yang diturunkan sebagai private // dari kelas INDUK class TURUNAN1: private INDUK { int Y; public: void SetY(int YY) { Y = YY; } int GetY() { return Y; } };
// Membuat kelas TURUNAN2 yang diturunkan sebagai private // dari kelas TURUNAN1 class TURUNAN2: private TURUNAN1 { int Z; public: void SetZ(int ZZ) { Z = ZZ; } int GetZ() { return Z; } }; // Fungsi utama int main() { // Melakukan instansiasi terhadap kelas TURUNAN2 TURUNAN2 A; // Melakukan pengesetan nilai X, Y dan Z melalui kelas TURUNAN2 A.SetX(20); // SALAH, tidak diizinkan oleh compiler A.SetY(30); // SALAH, tidak diizinkan oleh compiler A.SetZ(40); // Statemen di bawah ini SALAH, karena mengakses bagian private cout<<"Nilai X yang dipanggil dari kelas TURUNAN2 : "; cout< using namespace std; // Membuat kelas dengan nama INDUK1 class INDUK1 { int X; public: void SetX(int XX) { X = XX; } int GetX() { return X; } };
// Membuat kelas dengan nama INDUK2 yang tidak berkaitan // dengan kelas INDUK1 class INDUK2 { int Y; public: void SetY(int YY) { Y = YY; } int GetY() { return Y; } }; // Membuat kelas TURUNAN yang merupakan turunan // dari kelas INDUK1 dan INDUK2 class TURUNAN: public INDUK1, public INDUK2 { int Z; public: void SetZ(int ZZ) { Z = ZZ; } int GetZ() { return ZZ; } }; // Fungsi utama int main() { // Melakukan instansiasi terhadap kelas TURUNAN TURUNAN A; // Memanggil fungsi-fungsi yang terdapat pada kelas TURUNAN A.SetX(100); A.SetY(200); A.SetZ(300); // Menampikan nilai yang telah diset cout<<"Nilai X : "< using namespace std;
class INDUK { int X; public: // Constructor pada kelas INDUK INDUK(int XX) { X = XX; cout<<"Constructor kelas INDUK"<<endl; } // Membuat fungsi GetX int GetX() { return X; } }; class TURUNAN: public INDUK { int Y; public: // Constructor pada kelas TURUNAN TURUNAN(int XX, int YY): INDUK(XX) { Y = YY; cout<<"Constructor kelas TURUNAN"<<endl; } // Membuat fungsi GetY int GetY() { return Y; } }; // Fungsi utama int main() { // Melakukan instansiasi terhadap kelas TURUNAN TURUNAN A(10, 20); // Melakukan pemanggilan fungsi melalui objek A cout<<"Nilai X : "< using namespace std; // Membuat kelas INDUK1 class INDUK1 { int X; public: // Constructor pada kelas INDUK1 INDUK1(int XX) { X = XX; cout<<"Constructor kelas INDUK1"<<endl; } // Membuat fungsi GetX int GetX() {
return X; } }; // Membuat kelas INDUK2 class INDUK2 { int Y; public: // Constructor pada kelas INDUK2 INDUK2(int YY) { Y = YY; cout<<"Constructor kelas INDUK2"<<endl; } // Membuat fungsi GetY int GetY() { return Y; } }; // Membuat kelas TURUNAN // yang diturunkan dri kelas INDUK1 dan INDUK2 class TURUNAN: public INDUK1, public INDUK2 { int Z; public: // Constructor pada kelas TURUNAN TURUNAN(int XX, int YY, int ZZ): INDUK1(XX), INDUK2(YY) { Z = ZZ; cout<<"Constructor kelas TURUNAN"<<endl; } // Membuat fungsi GetZ int GetZ() { return Z; } }; // Fungsi utama int main() { // Melakukan instansiasi terhadap kelas TURUNAN TURUNAN A(10, 20, 30); // Melakukan pemanggilan fungsi melalui objek A cout<<"Nilai X : "<