download

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