Matakuliah
Tahun
: T0456 / Algoritma dan Metode Object
Oriented Programming
: 2007
Inheritance lanjutan
Pertemuan 22
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;
}
Bina Nusantara
Menghasilkan
keluaran:
123CBA
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
// 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());
else {
cout<< “\nError : stack is empty ” ;
exit(1);
}
}
};
Bina Nusantara
void main() {
Stack2 s1;
s1.push(11);
cout << endl
cout << endi
cout << endl
cout << endi
}
Bina Nusantara
s1.push(22); s1.push(33);
<< s1.pop();
<< s1.pop();
<< s1.pop();
<< s1.pop();
Hirarki Klas
Satu klas utama dapat memiliki beberapa klas turunan yang masingmasing berbeda.
Employee
Name
Number
GetData()
PutData()
Manager
Scientist
Title
Pubs
Dues
GetData()
PutData()
Bina Nusantara
GetData()
PutData()
Laborer
#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
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
© Copyright 2026 Paperzz