1 Pertemuan 9 Inheritance Matakuliah: T0044/Pemrograman Berorientasi Obyek Tahun: 2005 Versi: 1.0
2 Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : Menghasilkan program C++ dengan konsep Inheritance
3 Outline Materi Pendahuluan konsep Inheritance Deklarasi derived class Jenis Akses Derived Class Single Inheritance
4 Pendahuluan konsep Inheritance Pewarisan (Inherintance) adalah proses pembentukan satu klas baru (derived class) dari klas lainnya (based class) Proses ini memberikan keuntungan dalam daur ulang program (reusability). C++ menjamin bahwa semua klas turunan akan diinisial dan dilakukan proses clean-up dengan benar melalui mekanisme constructor dan destructor. Klas turunan (derived class) mewarisi semua kemampuan yang dimiliki oleh klas induk (based class), baik data members dan methods yang dideklarasikan dengan akses public atau protected. Hubungan antar klas turunan dan klas induknya akan membentuk suatu hirarki klas. Dalam OOP, perancangan hirarki klas merupakan hal yang utama.
5 Beberapa bentuk hirarki klas Single Inheritance Multiple Inheritance
6 hirarki klas Pada perancangan hirarki klas, klas induk (based class) merupakan klas yang mempunyai sifat (property) yang paling umum atau yang harus dimiliki oleh seluruh klas turunannya (derived class). Sedangkan sifat yang khusus dimiliki oleh klas-klas turunannya, dimana sifat-sifat khusus tersebut digunakan untuk meningkatkan sifat atau kemampuan dari klas induknya.
7 C++ Syntax for Inheritance class Nama_Turunan : jenis_akses Nama_Induk { } Contoh : class Barang { protected: int A; }; class Meja : public Barang { protected: int B; }; Nama_Turunan Jenis_akses
8 Akses member Base class dari Derived class Anggota klas induk dapat diakses oleh anggota klas turunan apabila jenis akses dari anggota klas induk adalah public atau protected. Anggota protected dari klas induk dapat diakses oleh klas turunan seolah-olah anggota tersebut dideklarasikan dalam definisi klas turunan yang bersangkutan. Anggota protected suatu klas tetap tidak dapat diakses oleh fungsi / klas lainnya dalam program yang tidak menjadi anggota klas turunan tersebut.
9 Jenis Akses Derived class class Nama_Turunan : jenis_akses Nama_Induk { } Jenis akses dari definisi klas turunan tersebut di atas dapat berupa public/ protected/private.
10 Program1 - Single Inheritance #include class Mahasiswa {private: char NIM[11], Nama[40]; public: void Masuk_Mhs () { cout > NIM; cout << “Masukkan Nama : “; gets( Nama ); } void Tampil_Mhs () {cout << “NIM = “ << NIM << endl; cout << “Nama = “ << Nama < endl; } }; class Mata_Kuliah : public Mahasiswa {protected: char Kd_Kuliah[6], Nm_MataKuliah[30]; public: void Masuk_Kuliah () { cout > Kd_Kuliah; cout << “Masukkan Nama Mata Kuliah : “; gets( Nm_MataKuliah ); } void Tampil_Kuliah () { cout << “Kode Kuliah : “ << Kd_Kuliah << endl; cout << “Nama Mata Kuliah : “ << Nm_MataKuliah << endl; } }; void main( ) { Mata_Kuliah M1; M1.Masuk_Mhs(); M1.Masuk_Kuliah(); M1.Tampil_Mhs(); M1.Tampil_Kuliah(); getch(); }
11 Program 2 - single Inheritance #include class Pegawai { protected: char NIP[10], Nama[30]; public: void Masuk_Data () { cout << “Masukkan Nomor Induk Pegawai : “; cin >> NIP; cout << “Masukkan Nama Pegawai : “; cin >> Nama; } void Tampil_Data () { cout << “Nomor Induk Pegawai = “ << NIP << endl; cout << “Nama Pegawai = “ << Nama << endl; } }; class Manager : public Pegawai {protected: char Titel[20], Telpon[20]; public: void Masuk_Data () { Pegawai :: Masuk_Data(); cout << “Masukkan titel dari manager : “; cin >> Titel; cout<< “Masukkan No Telpon : “; cin >> Telpon; } void Tampil_Data () { Pegawai :: Tampil_Data(); cout << “Titel dari manager : “ << Titel << endl; cout << “No Telpon manager : “ << Telpon << endl; } };
12 Program2 (Lanjutan) class Peneliti : public Pegawai {protected: int Publikasi; public: void Masuk_Data () { Pegawai :: Masuk_Data(); cout << “Masukkan No Publikasi : “; cin >> Publikasi; } void Tampil_Data () { Pegawai :: Tampil_Data(); cout << “No Publikasi Peneliti : “ << Publikasi << endl; } }; class Satpam : public Pegawai { }; void main () { Manager m1, m2; Peneliti p1; Satpam s1; // Bagian Entry data cout << “\nMasukkan data untuk manager 1 : “; m1.Masuk_Data(); cout << “\nMasukkan data untuk manager 2 : “; m2.Masuk_Data(); cout << “\nMasukkan data untuk peneliti 1 : “; p1.Masuk_Data(); cout << “\nMasukkan data untuk satpam 1 : “; s1.Masuk_Data(); // Bagian Display data cout << “\nData dari manager 1 : “; m1.Tampil_Data(); cout << “\nData dari manager 2 : “; m2.Tampil_Data(); cout << “\nData dari peneliti 1 : “; p1.Tampil_Data(); cout << “\nData dari satpam 1 : “; s1.Tampil_Data(); getch(); }
13 Tugas 9 Tugas 9A: Mahasiswa membuat ringkasan point point penting dalam konsep inheritance sesuai petunjuk dosen Tugas 9B: Mahasiswa Mencari output program dengan inheritance Tugas 9C: Mahasiswa membuat program sederhana dengan Single Inheritance