INHERITANCE & POLIMORPHISME Pertemuan Inheritance

Slides:



Advertisements
Presentasi serupa
21-Aug-14 OO Concept E. Haodudin Nurkifli Teknik Informatika Universitas Ahmad Dahlan Kuliah 3 : Administrative dan Introduction 8 Oktober 2010.
Advertisements

Pemrograman Berorientasi Objek
- PERTEMUAN 3- INHERITANCE
Polymorphism Suatu fungsi anggota dari suatu class dapat dijadikan sebagai fungsi virtual Jika fungsi ini dideklarasikan kembali pada class turunan dan.
Fungsi Friend Dalam bahasa C++ kita dapat membuat suatu fungsi yang berada di luar kelas (class) dan dapat meng-ak-ses bagian private suatu kelas. Fungsi.
Inheritance (pewarisan)
Modul 14 – Hendi Hermawan - 1
PEWARISAN ( INHERITANCE)
10 KELAS class nama_class struct nama_struct
Object Oriented Programming
Pemrograman Berbasis Objek
BAB III – CLASS (1) DIKTAT PBO Oleh: Adam Mukharil B. S.Kom.
Pemrograman Lanjut Ratnokustiawan.wordpress.com.
di OBJECT ORIENTED PROGRAMMING [OOP] Oleh H. SUMIJAN, Ir, M.Sc
Inheritance (Pewarisan)
7 Rekayasa Sistem Konsep Utama OOP Dedy Alamsyah, S.Kom.
Pertemuan 8 Pemrograman Berbasis Obyek Oleh Tita Karlita
PERANCANGAN BERORIENTASI OBJEK
Departemen Ilmu Komputer FMIPA IPB 2013
ABSTRACTION, ENCAPSULATION, INHERITANCE & POLYMORPHISM
Class, Inheritance, Encapsulation & Interface
Class.
Inheritance Nana Ramadijanti Laboratorium Computer Vision Politeknik Elekltronika Negeri Surabaya PENS-ITS 2009.
POINTER (VAR.PENUNJUK)
OBJECT ORIENTED PROGRAMMING ( O O P )
Friend. Adalah fungsi bukan anggota kelas yg dapat mengakses anggota kelas. Secara umum friend berguna jika terdapat suatu operasi yg hendak mengakses.
Teknik Pemrograman Terstruktur Linked lis & Inheritance 1/12 Pointer (Lanjutan…) Pemrograman Berorientasi Objek.
Pemrograman Berorientasi Obyek (PBO)
1 Pertemuan 9 Inheritance Matakuliah: T0044/Pemrograman Berorientasi Obyek Tahun: 2005 Versi: 1.0.
OOP Java Minggu 2b Dasar OOP. Class (1) Deklarasi class : [ *] class { [ *] } Cat : [] = optional, * = repeat 0-N.
1 Pertemuan 18 Template Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5.
Object Oriented Programings Pertemuan 11
Pengantar Perancangan Berorintasi Objek
INHERITANCE (PEWARISAN)
POLIMORFISME.
// Contoh program c++ dengan fungsi template
Linked List & POINTER Pertemuan POINTER
Universitas Respati Yogyakarta
Pemrograman Berorientasi Objek
12.Objek S. Indriani L, M.T 12. Objek.
Inheritance dan Kata Kunci static
Pertemuan 10 Inheritance Lanjutan
Pemograman Berorientasi Objek
10. Kelas S. Indriani L, M.T.
MODIFIER JAVA.
Pemprograman berorientasi objek
Constructor overloading
Pewarisan (Inheritance)
INHERITANCE (PEWARISAN)
Sumber : repository.binus.ac.id/content/T0454/T ppt
PEMOGRAMAN Kelas dan Perwarisan.
Membuat Kelas.
QUIS Algoritma Pemrograman I
Object Oriented Programming
Pilar Object Oriented Programming
13. Pewarisan S. Indriani L, M.T 12. Pewarisan.
Object Oriented Programming
Pemrograman Berorientasi Object
Pemograman Lanjut M. Failrul Filza, S.Kom
Pilar Object Oriented Programming
Pemrograman Berorientasi Object
PEWARISAN Pemograman Berorientasi Objek SI Semester III
(Object Oriented Programming)
Pemrograman Berbasis Objek
TEORI DAN KONSEP PEMROGRAMAN BERBASIS OBJECT (OOP)
Inheritance (pewarisan)
Pertemuan 5 Inheritance
Pemrograman Berorientasi Objek
Pemrograman Berorientasi Objek
Pemrograman Berorientasi Obyek (PBO) Disusun oleh : Khairan Marzuki, M.Kom Fakultas Teknik dan Kesehatan, Universitas Bumigora.
Transcript presentasi:

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.

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.

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.

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; };

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();

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 ...

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 1 Class Turunan 2 Gambar 14.1. Multilevel Inheritance Pelamar Karyawan Manager

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

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();

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.

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 14.2. Diagram Class Dasar Virtual Orang Tua Anak-1 Anak-2 Gabungan

Pada gambar 14.2. 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

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

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>

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);

~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();

Friend 14.3.1. 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.

14.3.2. 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); };

void main() { clrscr(); pegawai karyawan; karyawan.inisial(9707219,"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;

14.3.3. 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 };

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();

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); };

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(); }

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;

S e l e s a i