Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehYanti Hermawan Telah diubah "7 tahun yang lalu
1
INHERITANCE & POLIMORPHISME Pertemuan-14 14.1. Inheritance
Inheritance atau Pewarisan, merupakan alat bantu yang digunakan untuk mengirimkan kode-kode program ke kelas-kelas yang dikembangkan dengan cara yang berbeda-beda. Inheritance dapat juga digunakan kembali untuk membangun, mengorganisir dan menggunakan kembali kelas-kelas dengan mudah. Tanpa Inheritance, kelas-kelas merupakan sebuah unit berdiri sendiri. Inheritance, akan membentuk suatu konsep dimana jika konsep yang diatas berubah, maka perubahan akan berlaku dibawahnya.
2
Penentuan akses pada Inheritance ada tiga macam, yaitu :
a. Public Penentuan akses berbasis Public, menyebabkan anggota dari public dari sebuah class utama akan menjadi anggota public class turunan dan menyebabkan juga anggota protect class utama menjadi anggota protect class turunan, tetapi untuk anggota class private tetap pada private class utama. b. Private Penentu akses berbasis Private, menyebabkan anggota dari anggota public dari class utama akan menjadi anggota protect class turunan, dan menyebabkan anggota dari class utama menjadi anggota private dari class turunan. Anggota Private dari class utama tidak dapat diakses kecuali oleh class utama.
3
c. Protect Penentu akses berbasis Protect, menyebabkan anggota dari anggota protect dan public dari class utama akan menjadi anggota private dari class turunan. Anggota Private dari class utama selalu menjadi anggota private class utama.
4
a. Constructor dan Destructor Pada Inheritance
Untuk lebih jelasnya perhatikan pada contoh Constructor dan Destructor pada Inheritance. #include<iostream.h> #include<conio.h> #include<string.h> class motor { private: char nama[15]; public: motor(char *nama_motor = "XXX") strcpy(nama, nama_motor); cout<<"Aktifkan Mesin Motor Anda ... " <<endl; } ~motor() cout<<"Hentikan Mesin Motor Anda ... " void ket_motor() cout<<nama<<" Sedang Ngebut ..."<<endl; };
5
class bebek : public motor
{ public: bebek(char *nama_bebek) : motor(nama_bebek) cout<<"Aktifkan Mesin Motor Bebek Anda ... " <<endl; } ~bebek() cout<<"Hentikan Mesin Motor Bebek Anda ... " }; void main() clrscr(); bebek sport("BEBEK SPORT"); sport.ket_motor(); cout<<"\nUdah track terakhir nih..."<<endl; getche();
6
Hasil Eksekusi Program diatas
Aktifkan Mesin Motor Anda ... BEBEK SPORT Sedang Ngebut ... Udah track terakhir nih... Hentikan Mesin Motor Bebek Anda ... Hentikan Mesin Motor Anda ...
7
Gambar 14.1. Multilevel Inheritance
b. Multilevel Inheritance Inheritance dapat juga dilakukan secara bertingkat, perhatikan ilustrasi berikut : Class Pelamar Ke Class Karyawan dan Class Karyawan ke Class Manager. Class Dasar Class Turunan Class Turunan 2 Gambar Multilevel Inheritance Pelamar Karyawan Manager
8
Berikut bentuk deklarasi class pada multilevel inheritance
//deklarasi class pegawai class pelamar { private: char nama[50]; int usia; public: pelamar(char *nama, int usia); void ket_pelamar(); }; //deklarasi class karyawan yang memarisi class pelamar
9
class karyawan : public pelamar
{ private: char bagian[25]; int nik; public: karyawan(char *nama, int usia, char *bagian, int nik); void ket_karyawan(); }; //deklarasi class manager yang memarisi class karyawan class manager : public karyawan char kendaraan[30]; manager(char *nama, int usia, char *bagian, int nik, char kendaraan); void ket_manager();
10
14.2. Polimorphisme Polimorphisme merupakan suatu konsep yang menyatakan bahwa sesuatu yang sama dapat memiliki berbagai bentuk dan perilaku yang berbeda. Polimorphisme merupakan karakteristik dari pemrogramman berorientasi objek, pada objek-objek yang berbeda memberikan respon terhadap suatu pesan yang sama dan sesuai dengan sifat masing-masing, dengan cara dan kemampuan seperti ini jenis akses terentu dapat diterapkan dengan berbagai cara oleh objek-objek yang mempunyai tipe yang berbeda.
11
Gambar 14.2. Diagram Class Dasar Virtual
a. Class Dasar Virtual Untuk mendeklarasikan virtual dalam pewarisan class, dengan menambahkan kata kunci virtual. Perhatikan gambar berikut : Gambar Diagram Class Dasar Virtual Orang Tua Anak-1 Anak-2 Gabungan
12
Pada gambar diatas menampilkan suatu bentuk pewarisan Class Anak1 dan Anak2 mewarisi Class Orang Tua dan Class Gabungan mewarisi Class Anak1 dan Anak2. Berikut bentuk deklarasi Class Dasar Virtual. class orang_tua { protected: char nama[50]; }; class anak1 : virtual public orang_tua
13
class anak2 : virtual public orang_tua
{ }; class gabungan public: void ket_nama() cout<<"\nNama Orang Tua : "<<nama<<endl; } Keterangan Class Anak1 dan Anak2 berbagi data dalam memakai nama. Class Gabungan hanya terdapat satu nama
14
b. Destructor Virtual Destructor virtual dipakai jika suatu Class perlu untuk menghapus objek daru Class turunan, berdasarkan pointer yang menunjuk ke Class Dasar. Yang perlu dicatat adalah Constructor tidak dapat dijadikan Virtual. Berikut contoh Destructor Virtual. #include<iostream.h> #include<conio.h> #include<string.h>
15
class keluarga { protected: char *nama_keluarga; public: keluarga(char *nama) nama_keluarga = new char[strlen(nama)+1]; strcpy(nama_keluarga, nama); } virtual ~keluarga() cout<<"Destructor di Keluarga ..."<<endl; delete [] nama_keluarga; virtual void ket() = 0; }; class keturunan : public keluarga private: char *nama_mid; keturunan(char *nama_tengah, char *nama_kel): keluarga(nama_kel) nama_mid = new char [strlen(nama_mid) + 1]; strcpy(nama_mid, nama_tengah);
16
~keturunan() { cout<<"Destructor di Keturunan ..."<<endl; delete [] nama_mid; } void ket() cout<<"Nama Tengah "<<' '<<nama_keluarga<<endl; }; void main() clrscr(); keluarga *anak_pertama = new keturunan ("ILHAM","HADIANSYAH"); anak_pertama->ket(); delete anak_pertama; getche();
17
Friend Penjelasan Friend yang berarti Teman, didalam pemrogramman berorientasi objek, digunakan untuk menjaga agar ukuran object class minimum dan untuk meningkatkan kerja object class dengan kata lain menyederhanakan kompleksitas suatu objek. Friend jika terlalu banyak digunakan akan mengganggu konsep Encapsulation atau pengkapsulan dikarenaan Friend memungkinkan pihak luar class dapat mengakses anggota class, termasuk yang bersifat private.
18
Fungsi Friend Fungsi Friend adalah fungsi bukan anggota class yang dapat mengkases anggota class. Fungsi ini dapat digunakan untuk mengakses anggota class yang mempunyai sifat private atau protected. #include<iostream.h> #include<conio.h> #include<string.h> class pegawai { private: long nip; char nama[50]; char bagian[20]; public: pegawai(); void inisial(long nip, char *nama, char *bagian); friend void tampil(pegawai karyawan); };
19
void main() { clrscr(); pegawai karyawan; karyawan.inisial( ,"ILHAM","KEUANGAN"); tampil(karyawan); getche(); } pegawai::pegawai() nip = 0; strcpy(nama, ""); strcpy(bagian, ""); void pegawai::inisial(long nip, char *nama, char *bagian) pegawai::nip = nip; strcpy(pegawai::nama, nama); strcpy(pegawai::bagian, bagian); void tampil(pegawai karyawan) cout<<"No. Induk Pegawai : "<<karyawan.nip<<endl; cout<<"Nama Pegawai : "<<karyawan.nama<<endl; cout<<"Bagian : "<<karyawan.bagian<<endl;
20
Class Friend Suatu Class dapat dijadikan sebuah Friend dari Class lainnya. Class yang dapat dijadikan Friend jika terdapat dua class dan diperlukan untuk mengakses bagian private atau protected. #include<iostream.h> #include<conio.h> class kursus { private: int lab_kursus; public: kursus() lab_kursus = 2; } friend class kuliah; //->d3 sbg class friend };
21
class kuliah { private: int lab_kuliah; public: kuliah() lab_kuliah = 8; } void ket_lab(kursus a) cout<<"Lab. Kursus = "<<a.lab_kursus <<endl; cout<<"Lab. Kuliah = "<<lab_kuliah<<endl; cout<<"Total Lab. Kuliah = " <<a.lab_kursus+lab_kuliah<<endl; }; void main() clrscr(); kursus lab_kursus; kuliah lab_kuliah; lab_kuliah.ket_lab(lab_kursus); getche();
22
14.3.4. Friend Pada Multi Class
Friend dapat juga mengakses bebera class yang berlainan. Berikut dapat dilihat pada contoh berikut : #include<iostream.h> #include<conio.h> #include<string.h> class pemain_bulutangkis_pria; class pemain_bulutangkis_wanita { private: char nama[50]; char negara[15]; public: pemain_bulutangkis_wanita(char *nama, char *negara); friend void ket_pemain_campuran (pemain_bulutangkis_wanita a, pemain_bulutangkis_pria b); };
23
class pemain_bulutangkis_pria
{ private: char nama[50]; char negara[15]; public: pemain_bulutangkis_pria(char *nama, char *negara); friend void ket_pemain_campuran (pemain_bulutangkis_wanita a, pemain_bulutangkis_pria b); }; void main() clrscr(); pemain_bulutangkis_wanita p_wanita("Susi Susanti", "Indonesia"); pemain_bulutangkis_pria p_pria("Hendrawan", ket_pemain_campuran(p_wanita, p_pria); getche(); }
24
pemain_bulutangkis_wanita::pemain_bulutangkis_wanita
(char *nama, char *negara) { strcpy(pemain_bulutangkis_wanita::nama, nama); strcpy(pemain_bulutangkis_wanita::negara, negara); } pemain_bulutangkis_pria::pemain_bulutangkis_pria strcpy(pemain_bulutangkis_pria::nama, nama); strcpy(pemain_bulutangkis_pria::negara, negara); void ket_pemain_campuran(pemain_bulutangkis_wanita a, pemain_bulutangkis_pria b) cout<<"Pemain Ganda Campuran : "<<endl; cout<<a.nama<<" < "<<a.negara<<" > "<<endl; cout<<b.nama<<" < "<<b.negara<<" > "<<endl;
25
S e l e s a i
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.