Inheritance lanjutan Pertemuan 22 Matakuliah : T0456 / Algoritma dan Metode Object Oriented Programming Tahun : 2007 Inheritance lanjutan Pertemuan 22
Pada akhir pertemuan ini, diharapkan: Learning Outcomes Pada akhir pertemuan ini, diharapkan: Mahasiswa dapat menghasilkan program yang menggunakan konsep inheritance. Buku Referensi: C++ - How to program, Deitel & Deitel, Prentice Hall, 2001. Websites: http://www.deitel.com 3 Bina Nusantara
Outline Materi Constructor dan Destructor pada inheritance Modifikasi class turunan Hirarki class inheritance Contoh program 4 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 Based1{ Base1(){ cout<<“1”; }; ~Base1(){ cout<<“A”; }; } class Based2:public Based1{ Base2(){ cout<<“2”; }; ~Base2(){ cout<<“B”; }; class Derived:public Based2 { Derived(){ cout<<“3”; }; ~Derived(){ cout<<“C”; }; Void main(){ Derived MyObj; Menghasilkan keluaran: 123CBA Bina Nusantara
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
// Program C++ -Overload functions Klas turunan 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
class Stack 2 : public Stack { public : void push( int var ) { if ( top < MAX ) Stack :: push( var ); else { cout << “ \nError : stack is full ”; exit(1); } int pop() { if (top > 0 ) return(Stack :: pop()); cout<< “\nError : stack is empty ” ; }; Bina Nusantara
s1.push(11); s1.push(22); s1.push(33); void main() { Stack2 s1; s1.push(11); s1.push(22); s1.push(33); cout << endl << s1.pop(); cout << endi << s1.pop(); } Bina Nusantara
Hirarki Klas Satu klas utama dapat memiliki beberapa klas turunan yang masing-masing berbeda. Employee Name Number GetData() PutData() Laborer Scientist Pubs Manager Title Dues Bina Nusantara
#include <iostream.h> const int LEN = 80; class employee { private : char name[LEN]; unsigned long number; public : void getdata() { cout << “ \nEnter Last Name : “ ; cin >> name; cout << “\nEnter number : “ ; cin >> number; } void putdata() { cout << “ \n Name : “ << name; cout << “ \n Number : “ << number; }; Bina Nusantara
class manager : public employee { private : char title[LEN]; double dues; public : void getdata() { employee :: getdata(); cout << “ \nEnter Title : “; cin >> title; cout << “ \n Golf club dues : “ << dues; cin >> dues; } void putdata() { employee :: putdata(); cout << “ \nTitle : “; << dues; }; Bina Nusantara
class scientist : public employee { private : int pubs; public : void getdata() { employee :: getdata(); cout << “\nEnter # pubs: “; cin >> pubs; } void putdata() { employee :: putdata(); cout << “ \n# publications : “; << pubs; }; class laborer : public employee{ }; Bina Nusantara
cout << “ \nEnter data for manager 1 ” ; m1.getdata(); void main() { manager m1, m2; scientist s1; laborer l1; cout << “ \nEnter data for manager 1 ” ; m1.getdata(); cout << “ \nEnter data for manager 2 ” ; m2.getdat(); cout << “ \nEnter data for scientist 1 ” ; s1.getdata(); cout << “ \nEnter data for laborer 1 ” ; l1.getdata(); cout << “\nData on manager 1’; m1.putdata(); cout << “\nData on manager 2”; m2.putdata(); cout << “\nData on scientist 1”; s1.putdata(); cout << “\nData on laborer 1”; l1.putdata(); } Bina Nusantara
Diskusi dan Tanya Jawab Latihan soal 16 Bina Nusantara