11_12_13 Inheritance – Polimorfisme – Template Fungsi dan Kelas
ALGORITM A DAN PEM ROGRAM AN 2
M ATERI
- Teks/ string
- Inheritance (Pewarisan)
- Pointer
- Polimorfisme
- Template Fungsi dan
- File
- Struktur
Kelas
- Kelas/ Class
- Sort
- Konstruktor dan Destruktor
- Search
- Kelas dan Obyek
- Overloading Operator
Pert emuan 11
Inheritance
- Inheritance (Pewarisan) adalah
sifat dari suat u kelas yang dapat mewariskan anggot a dat a maupun fungsi anggot a ke kelas lain
Inheritance
mewarisi lain disebut dengan kelas t urunan (derived class)
Kelas yang sifat dari kelas
- Kelas yang mewariskan sifat ke kelas lain disebut dengan kelas dasar (base
class)
Inheritance
Keunt ungan dari inheritance adalah
memungkinkan penggunaan kembali kode yang sudah teruji benar,sehingga t idak perlu membuat kode
yang sama set iap kali membuat program baru
Penentu Inheritance/ Pewarisan
- Terdiri dari 3 macam penent u pewarisan, yait u :
1. Private
2. Protected
3. Public
- Sint aks: class NamaKelasTurunan : Privat e NamaKelasDasar at au class NamaKelasTurunan : NamaKelasDasar
- Cont oh:
class OrangTua class Anak : Private OrangTua { { …
… }; };
- Sifat :
- – Semua anggot a dat a dan fungsi anggot a yang bersifat public dan protected pada kelas dasar akan diwariskan ke kelas t urunan dengan sifat
private
- – Anggot a dat a dan fungsi anggot a pada kelas dasar yang bersifat private tidak diwariskan
- – Konstruktor dan destruktor tidak diwariskan
- Sint aks: class NamaKlsTurunan : Prot ect ed NamaKelasDasar at au class NamaKelasTurunan : NamaKelasDasar
- Cont oh:
class OrangTua class Anak : Protected OrangTua { { …
… }; };
- Sifat :
- – Semua anggot a dat a dan fungsi anggot a yang bersifat public dan protected pada kelas dasar akan diwariskan ke kelas t urunan dengan sifat
protected
- – Anggot a dat a dan fungsi anggot a pada kelas dasar yang bersifat private tidak diwariskan
- – Konstruktor dan destruktor tidak diwariskan
Pewarisan Contoh Soal 01:
M enampilkan nilai X dan Y
Program
contoh 01
Algoritma.........?????
Pseudocode.......??????
- Sint aks: class NamaKlsTurunan : Public NamaKelasDasar at au class NamaKelasTurunan : NamaKelasDasar
- Cont oh:
class OrangTua class Anak : Public OrangTua { { …
… }; };
- Sifat :
- – Semua anggot a dat a dan fungsi anggot a yang bersifat public dan protected pada kelas dasar akan diwariskan ke kelas t urunan t anpa
(prot ect ed diwariskan menjadi
perubahan
prot ect ed, public diwariskan menjadi public)
- – Anggot a dat a dan fungsi anggot a pada kelas dasar yang bersifat
private tidak diwariskan
Pewarisan Contoh Soal 02:
M enampilkan info basis/ dasar dan info t urunan “ dijalankan”
Program
contoh 02 Dikumpulkan hari rabu, 27 M ei 2015 Apabila dikumpulkan hari rabu maka mendapat bonus
Tugas
Algoritma.........?????
Pseudocode.......??????
- +10
Program
contoh 03
Rangkuman Pewarisan Penentu Pewarisan Penentu Akses di Kelas Dasar Penentu Akses Baru di Kelas Turunan private private tidak diwariskan protected private public private protected private tidak diwariskan protected protected public protected Public private tidak diwariskan protected protected
Akses ke Anggota Data yang bersifat Private
- Agar dapat mengakses anggota data pada kelas dasar yang bersifat private, ada dua cara yang bisa dilakukan:
1. M engubah penent u akses menjadi protected
2. M emanggil konst rukt or kelas dasar pada definisi konst rukt or kelas t urunan
Akses ke Anggota Data yang bersifat
Private1. M engubah penent u akses menjadi protected
- – Dengan mengubah penent u akses menjadi prot ect ed, maka anggot a dat a bisa diakses dari kelas t urunan
- – Digunakan jika anggot a dat a dipakai dalam proses selanjut nya di kelas t urunan
2. M emanggil konst rukt or kelas dasar pada definisi konst rukt or kelas t urunan
- – Penent u akses di kelas dasar t et ap privat e
- – Dipakai jika anggot a dat a t idak dipakai pada proses selanjut nya di kelas t urunan. M isal hanya
Pewarisan Bertingkat
- Pada pewarisan bert ingkat , terdapat dua atau lebih kelas t urunan
Pewarisan Bertingkat
- Dalam kasus nama fungsi anggota ket iga kelas sama, maka harus menggunakan operat or resolusi lingkup (::) unt uk menyatakan kepemilikan
- Cont oh: OrangTua::lihat () fungsi lihat () milik
kelas OrangTua
Pewarisan Berganda
- Dalam pewarisan berganda, sebuah kelas dapat mewarisi sifat lebih dari sat u kelas
- Cont oh: Kelas Anak mewarisi sifat dari kelas Ayah dan kelas Ibu
Pewarisan Berganda
- Dalam kasus nama fungsi anggot a pada kedua kelas dasar sama, maka unt uk mengakses harus menggunakan operat or resolusi lingkup (::) yang menandakan kepemilikan
- Cont oh: Fungsi anggot a di kelas Ayah dan Ibu sama yait u lihat (). Cara memanggil fungsi:
Anak anak1; anak1.Ayah::lihat ();
POLIFORFISM E Pert emuan 12
Fungsi Virtual
- Fungsi virt ual adalah fungsi anggota yang dideklarasikan dengan menggunakan keyword “ Virt ual”
- Guna fungsi virt ual:
- – M isal pada kelas dasar t erdapat fungsi virt ual.
- Kemudian fungsi t ersebut dideklarasikan lagi pada kelas t urunan.
- – M isalnya lagi sebuah point er dicipt akan unt uk menunjuk ke kelas dasar.
- Selanjut nya point er dapat memilih obyek yang t epat
kalau fungsi anggot a virt ual t ersebut dipanggil
Keterangan Fungsi Virtual
- Fungsi virt ual halo() didefinisikan di kelas OrangTua (kelas dasar)
- Fungsi halo() juga didefinisikan di kelas Anak dan kelas Cucu
- Sebuah pointer ot 1 diciptakan yang bert ipe OrangTua
- Pointer kemudian diat ur unt uk menunjuk ke obyek anak1 yang bert ipe Anak
Keterangan Fungsi Virtual
- Ket ika fungsi anggot a lihat () dipanggil dari point er, t ernyat a yang muncul adalah fungsi lihat () dari kelas OrangTua
- Ket ika fungsi anggot a halo() dipanggil dari point er, t ernyat a yang muncul adalah fungsi halo() dari kelas Anak
- Hal ini t erjadi karena halo() adalah fungsi virt ual
- Hal serupa juga t erjadi ket ika point er menunjuk ke obyek cucu1
Polimorfisme
- Polimorfisme berart i mempunyai banyak bent uk
- Salah sat u bent uk polimorfisme adalah overloading t erhadap fungsi dan operat or Polimorfisme semacam ini disebut polimorfisme saat kompilasi (compile t ime polimorphism)
- Bent uk polimorfisme lainnya adalah polimorfisme saat eksekusi (execut ion t ime polimorphism), disebut juga lat e binding at au dynamic binding
- Polimorfisme macam ini mampu menangani dua at au lebih obyek pada saat eksekusi dengan menyesuaikan t erhadap lingkungan obyek yang bersangkut an
Fungsi Virtual M urni
- Fungsi virt ual pada kelas dasar t idak pernah diakses sehingga t idak berguna
- Hal ini karena t idak pernah ada pencipt aan obyek dari kelas dasar
- Cont oh:
Fungsi halo() pada kelas OrangTua t idak pernah diakses karena obyek berkelas OrangTua t idak pernah dicipt akan
- Karena t idak berguna, isi fungsi virt ual bisa dihapus dengan cara menambahkan = 0 set elah t anda ()
- Cont oh:
virt ual void halo() = 0;
Kelas Abstrak
- Kelas Abst rak adalah kelas yang dideklarasikan namun t idak unt uk mencipt akan obyek
- Ciri kelas abst rak:
M engandung paling t idak sat u fungsi virt ual murni
- Cont oh:
Kelas OrangTua pada cont oh program merupakan kelas abst rak
- Kelas abst rak t idak dapat dipakai unt uk mencipt akan obyek, sehingga pernyat aan berikut t idak diperkenankan:
OrangTua ot 1;
Namun pencipt aan point er bert ipe kls abst rak dpt dilakukan
Kelas Dasar Virtual
- Gambar pewarisan bert ingkat
OrangTua Anak1 Anak2 Cucu
- Bisa t erjadi masalah pada kelas Cucu bila pendeklarasian dilakukan sepert i pada cont oh
Kelas Dasar Virtual
- Cont oh:
M isal pada kelas OrangTua t erdapat anggot a dat a “ nama” bert ipe prot ect ed. Anggot a dat a ini akan diwariskan ke Anak1 dan Anak2.
Karena kelas Cucu merupakan gabungan dari kelas Anak1 dan Anak2, maka akan t erdapat dua anggot a dat a “ nama” pada kelas Cucu.
- Cara mengat asi : dengan menggunakan keyword virt ual pada saat pendeklarasian kelas t urunan
- – Cont oh:
class Anak1 : virt ual public OrangTua{}; class Anak2 : virt ual public OrangTua{};
Pert emuan 13
Pendahuluan
- Template mirip dengan overloading, yait u digunakan pada fungsi-fungsi yang menangani t ugas yang sama tapi berbeda t ipe data dan jumlah parameternya
- Bedanya:
- – pada overloading, kode harus dit ulis diset iap fungsi
- – pada t emplat e, kode hanya dit ulis sekali yait u
Template Fungsi
- Sint aks membuat t emplat e: t emplat e <class NamaPengenal> TipeNilaiBalik NamaFungsi(NamaPengenal paramet er, …) { … }
- Cont oh:
t emplat e <class T> void t ukar(T & x, T & y) { T t mp; t mp = x; x = y; y = t mp;
Template Fungsi
- Set elah membuat t emplat e, prot ot ipe fungsi harus dibuat
- Prot ot ipe fungsi harus sama persis dengan definisi fungsi pada t emplat e t ermasuk t ipe nilai balik, jumlah dan t ipe paramet er
- Cont oh:
void t ukar(int & x, int & y); void t ukar(double & x, double & y);
- Sepert i pada overloading, t emplat e akan bekerja sesuai dengan jumlah dan t ipe paramet er dari fungsi yang memanggilnya
Tugas
Apa yang Anda diketahui tentang
- NILAI
BALIK
- Dikumpulkan hari rabu, 27 M ei 2015
- Apabila jawaban Anda sama maka yang sama nilainya kan dibagi sejumlah jawaban yang sama
- Apabila dikumpulkan hari rabu maka
Template dengan Bermacam Tipe
- Sint aks:
t emplat e <class NamaPengenal1, class NamaPengenal2> TipeNilaiBalik NamaFungsi(NamaPengenal1 paramet er1, NamaPengenal2 paramet er2) {
… }
- Cont oh:
t emplat e <class A, class B> int lebih_dari(A dat a[], B x, int jumdat a) { …
Overloading terhadap Template Fungsi
- Cara overloading t erhadap t emplat e fungsi sama dengan
overloading t erhadap fungsi
- Caranya: membuat bermacam t emplat e dengan nama sama t api
berbeda kegunaannya, berbeda jumlah dan t ipe paramet ernya
- Cont oh:
t emplat e <class T> void t ukar(T & x, T & y) {T t mp; t mp = x; x = y; y = t mp;} t emplat e <class T> void t ukar(T x) {cout << " Nilai x : " << x << endl;} t emplat e <class T>
Template Kelas
- Templat e dalam kelas digunakan unt uk mendefinisikan anggot a dat a dan fungsi anggot a
- Sint aks: t emplat e <class NamaPengenal> class NamaKelas { ..
Template Kelas
- Cont oh:
t emplat e <class Templ> class Arit mat ika { public:
Templ penjumlahan(Templ x, Templ y); Templ pengurangan(Templ x, Templ y); }; t emplat e <class Templ> Templ Arit mat ika<Templ>::penjumlahan(Templ x, Templ y) { ret urn(x + y);
Template Kelas
t emplat e <class Templ> Templ Arit mat ika<Templ>::pengurangan(Templ x,
Templ y) { ret urn(x - y); }
- Cont oh pembuat an obyek:
Arit mat ika<int > jum_int ; Arit mat ika<float > jum_float ; Arit mat ika<int > kur_int ; Arit mat ika<float > kur_float ;