Matakuliah Tahun Versi : <<Kode>>/<<Nama mtkul>> : <<Tahun Pembuatan>> : <<versi/revisi>> Pertemuan 11 Inheritance (Turunan) 1 Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : • Mengerti konsep Inheritance pada pemrograman C++. 2 Outline Materi • • • • Pendahuluan konsep Inheritance Deklarasi derived class Jenis Akses Derived Class Single Inheritance 3 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. 4 Beberapa bentuk hirarki klas Single Inheritance Multiple Inheritance 5 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. 6 C++ Syntax for Inheritance • class Nama_Turunan : jenis_akses Nama_Induk • { <Anggota_klas> } • • • • • • • Contoh : class Barang { protected: int A; Nama_Turunan }; class Meja : public Barang { protected: int B; Jenis_akses }; 7 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. 8 Jenis Akses Derived class • class Nama_Turunan : jenis_akses Nama_Induk • { <Anggota_klas> } • Jenis akses dari definisi klas turunan tersebut di atas dapat berupa public/ protected/private. 9 Program1 - Single Inheritance #include <iostream.h> #include <stdio.h> #include <conio.h> class Mahasiswa {private: char NIM[11], Nama[40]; public: void Masuk_Mhs () { cout << “Masukkan NIM : “; cin >> 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 << “Masukkan Kode Kuliah : “; cin >> 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(); } 10 Program 2 - single Inheritance • • • • • • • • • • • • • • • • • • • • #include <iostream.h> #include <stdio.h> #include <conio.h> 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; } }; 11 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(); } 12 Topik Minggu Depan • Polymorphism • Tugas: Mahasiswa membuat program sederhana dengan Single Inheritance: Sistem Elevator Sederhana • Tugas (optional): Studi Kasus-DC Motor Positional Control (Ref: buku-C is for control) 13
© Copyright 2024 Paperzz