download

Matakuliah
Tahun
Versi
: T0044/Pemrograman Berorientasi Obyek
: 2005
: 1.0
Pertemuan 9
Inheritance
1
Learning Outcomes
Pada akhir pertemuan ini, diharapkan mahasiswa
akan mampu :
• Menghasilkan program C++ dengan
konsep Inheritance
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;
};
class Meja : public Barang
{ protected: int B;
};
Nama_Turunan
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
#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 );
}
Program1 - Single
Inheritance
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
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
13