T 0456 Algoritma dan Metode Object Oriented Programming
T 0456 – Algoritma dan Metode Object Oriented Programming Week 8 – Inheritance
Learning Outcome Pada akhir pertemuan ini, diharapkan: • Mahasiswa dapat menjelaskan konsep inheritance dalam pembuatan program. Buku Referensi: ØC++ - How to program, Deitel & Deitel, Prentice Hall, 2001. Websites: Øhttp: //www. deitel. com
Outline Materi • • Konsep Inheritance. Class Hierarchy Diagram Deklarasi Derived Class. Jenis Akses Inheritance. Constructor dan Destructor pada inheritance Modifikasi class turunan Hirarki class inheritance
KONSEP INHERITANCE
Inheritance • Adalah proses pembentukan satu klas baru (derived class) dari klas lainnya (based class) • Untuk tujuan reusability • Derived class mendapat warisan semua kemampuan dari yang dimiliki oleh based class, baik data members dan methods yang dideklarasikan dengan akses public atau protected. • Derived class dan based class saling berhubungan membentuk sebuah Hierarchy. • Ada yang single dan ada yang multiple Inheritance Bina Nusantara
Inheritance cont… • Pada perancangan hirarki class, based class merupakan class yang mempunyai sifat (property) yang paling umum atau yang harus dimiliki oleh seluruh class turunannya. • Dengan adanya Inheritance, maka dimungkinkan untuk reusability, sehingga tidak perlu membuat dari baru Bina Nusantara
Class Hierarchy Diagram (Single Inheritance) Based Class Derived Class Based Class A Derived Class (also Based Class B) Derived Class Bina Nusantara Based Class Derived 1 Derived 2
Based Class and Derived Class • Member based class dapat diakses oleh member derived class apabila jenis akses dari member based class adalah public atau protected. • Member tersebut dapat diakses seolah-olah dideklarasikan dalam derived class. • Member protected tetap tidak dapat diakses class lain yang bukan turunannya. Bina Nusantara
Deklarasi Derived Class class Kendaraan{ protected: int roda; } Based class Class Mobil: public Kendaraan{ Mobil(){ roda=4; //mendapat warisan int roda } }; Kendaraan Jenis akses Inheritance Derived class Bina Nusantara Mobil
Jenis Akses Inheritance • Public – Semua member public dari based class tetap menjadi public di dalam derived class. – Semua member protected dari based class tetap menjadi protected di dalam derived class. • Protected – Semua member public dari based class menjadi protected di dalam derived class. – Semua member protected dari based class tetap menjadi protected di dalam derived class. • Private – Semua member public dari based class menjadi private di dalam derived class. – Semua member protected dari based class menjadi private di dalam derived class. Bina Nusantara
Jenis Akses Inheritance Bina Nusantara
Penerapan Inheritance Class Tanpa Inheritance Pelanggan. VIP Pelanggan. Biasa long Saldo Pelanggan. VIP Saldo = 0 Tambah Kurang disc = 10% Bina Nusantara Pelanggan. Biasa Saldo = 0 Tambah Kurang disc = 0%
Penerapan Inheritance Class Dengan Inheritance Pelanggan long Saldo Pelanggan Saldo = 0 Tambah Pelanggan. VIP Kurang disc = 10% Bina Nusantara Pelanggan. Biasa Kurang disc = 0%
Inheritance Dengan adanya Inheritance, maka dimungkinkan untuk reusability, sehingga tidak perlu membuat dari baru Code: class pelanggan. VIP: public pelanggan { -- class content -}; Bina Nusantara
Contoh Program // program C++ dengan inheritance #include <constream. h> class Counter { protected : unsigned int count; public : Counter() { count = 0 ; } unsigned int get_count() { return count; } Counter operator ++ () { count++ ; return Counter( count ) ; } }; Bina Nusantara
Contoh Program class Count. Dn : public Counter { public : Counter operator --(){ count -- ; return Counter( count ) ; } }; void main(){ Count. Dn c 1; cout << “ nc 1 = “ < c 1. get_count(); c 1 -- ; cout << “ nc 1 = “ < c 1. get_count(); } Bina Nusantara
Constructor dan Destructor dalam Inheritance • Constructor based class dijalankan terlebih dahulu, kemudian constructor derived class. • Destructor derived class dijalankan terlebih dahulu dengan urutan berbalikan dengan urutan constructor. • Urutan juga berlaku untuk multiple inheritance. • Jika konstruktor based class memiliki parameter, maka parameter constructor based class tersebut harus dimasukkan dalam constructor derived class. • Jika parameter constructor derived class ada yang tidak sama dengan constructor based class, maka constructor based class yang akan dijalankan adalah constructor yang memiliki jumlah dan parameter yang paling mendekati. Bina Nusantara
Constructor dan Destructor dalam Inheritance Example class Based 1{ Base 1(){ cout<<“ 1”; }; ~Base 1(){ cout<<“A”; }; } class Based 2: public Based 1{ Base 2(){ cout<<“ 2”; }; ~Base 2(){ cout<<“B”; }; } class Derived: public Based 2 { Derived(){ cout<<“ 3”; }; ~Derived(){ cout<<“C”; }; } Void main(){ Derived My. Obj; } Bina Nusantara Menghasilkan keluaran: 123 CBA
Modifikasi Fungsi Klas Turunan Klas turunan (derived class) memiliki member functions yang sama dengan klas utama (base class) Member functions tersebut dapat dimodifikasi disesuaikan kebutuhan kelas tersebut Bina Nusantara
Contoh Program class Stack 2 : public Stack { public : void push( int var ) { if ( top < MAX ) Stack : : push( var ); else { cout << “ n. Error : stack is full ”; exit(1); } } int pop() { if (top > 0 ) return(Stack : : pop()); else { cout<< “n. Error : stack is empty ” ; exit(1); } } }; Bina Nusantara
Contoh Program // Program C++ -Overload functions Klas turunan #include <iostream. h> #include <process. h> const int MAX =100; class Stack { protected : int st[MAX}; int top; public : Stack() { top = o ; } void push( int var ) { st[ ++top ] = vbar ; } int pop() { return st[ top -- ] ; } }; Bina Nusantara
Contoh Program void main() { Stack 2 s 1; s 1. push(11); cout << endl cout << endi } Bina Nusantara s 1. push(22); s 1. push(33); << s 1. pop();
Hirarki Klas Satu klas utama dapat memiliki beberapa klas turunan yang masing berbeda. Employee Name Number Get. Data() Put. Data() Manager Title Dues Get. Data() Put. Data() Bina Nusantara Scientist Pubs Get. Data() Put. Data() Laborer
Contoh Program #include <iostream. h> const int LEN = 80; class employee { private : char name[LEN]; unsigned long number; public : void getdata() { cout << “ n. Enter Last Name : “ ; cin >> name; cout << “n. Enter number : “ ; cin >> number; } void putdata() { cout << “ n Name : “ << name; cout << “ n Number : “ << number; } }; Bina Nusantara
Contoh Program class manager : public employee { private : char title[LEN]; double dues; public : void getdata() { employee : : getdata(); cout << “ n. Enter Title : “; cin >> title; cout << “ n Golf club dues : “ << dues; cin >> dues; } void putdata() { employee : : putdata(); cout << “ n. Title : “; << dues; } Bina Nusantara };
Contoh Program class scientist : public employee { private : int pubs; public : void getdata() { employee : : getdata(); cout << “n. Enter # pubs: “; cin >> pubs; } void putdata() { employee : : putdata(); cout << “ n# publications : “; << pubs; } }; class Bina Nusantara laborer : public employee{ };
Contoh Program void main() { manager m 1, m 2; scientist s 1; laborer l 1; cout << “ n. Enter data for manager 1 ” ; m 1. getdata(); cout << “ n. Enter data for manager 2 ” ; m 2. getdat(); cout << “ n. Enter data for scientist 1 ” ; s 1. getdata(); cout << “ n. Enter data for laborer 1 ” ; l 1. getdata(); cout << “n. Data on manager 1’; m 1. putdata(); cout << “n. Data on manager 2”; m 2. putdata(); cout << “n. Data on scientist 1”; s 1. putdata(); Bina Nusantaracout << “n. Data on laborer 1”; l 1. putdata();
Thank You
- Slides: 28