ALGORITM A DAN
PEM ROGRAM AN 2
M ATERI
•
Teks/ string•
Pointer•
File•
Struktur•
Kelas/ Class•
Konstruktor dan Destruktor•
Kelas dan Obyek•
Overloading Operator•
Inheritance (Pewarisan)•
Polimorfisme•
Template Fungsi dan Kelas•
SortINHERITANCE (PEWARISAN)
Pert emuan 11
Inheritance
•
Inheritance (Pewarisan)
adalah
sifat dari suat u kelas yang
dapat mewariskan anggot a
Inheritance
•
Kelas yang
mewarisi
sifat dari kelas
lain disebut dengan
kelas t urunan
(derived 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
Penentu
Inheritance/ Pewarisan
•
Terdiri dari 3 macam penent u
pewarisan, yait u :
1. Private
2. Protected
1. Penentu Pewarisan Private
•
Sint aks:
class
NamaKelasTurunan
: Privat e NamaKelasDasar
at au
class
NamaKelasTurunan
: NamaKelasDasar
•
Cont oh:
class OrangTua class Anak : Private OrangTua
{ {
… …
1. Penentu Pewarisan Private
•
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
2. Penentu Pewarisan Protected
•
Sint aks:
class
NamaKlsTurunan
: Prot ect ed NamaKelasDasar
at au
class NamaKelasTurunan : NamaKelasDasar
•
Cont oh:
class OrangTua class Anak : Protected OrangTua
{ {
… …
2. Penentu Pewarisan Protected
•
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
Pewarisan
Contoh Soal 01:
3. Penentu Pewarisan Public
•
Sint aks:
class
NamaKlsTurunan
: Public NamaKelasDasar
at au
class NamaKelasTurunan : NamaKelasDasar
•
Cont oh:
class OrangTua class Anak : Public OrangTua
{ {
… …
3. Penentu Pewarisan Public
•
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
perubahan
(prot ect ed diwariskan menjadi
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:
Tugas
Algoritma...?????
Pseudocode...??????
Dikumpulkan hari rabu, 27 M ei 2015
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
Akses ke Anggota Data yang bersifat
Private
1. M engubah penent u akses menjadi
protected
–
Dengan mengubah penent u akses menjadiprot 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 urunan2. 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 padaPewarisan Bertingkat
Pewarisan Bertingkat
•
Dalam kasus nama fungsi anggota ket iga
kelas sama, maka harus menggunakan
operat or resolusi lingkup (::) unt uk
menyatakan kepemilikan
•
Cont oh:
Pewarisan Berganda
•
Dalam pewarisan berganda, sebuah kelas dapat
mewarisi sifat lebih dari sat u kelas
•
Cont oh:
Pewarisan Berganda
•
Dalam kasus nama fungsi anggot a pada kedua kelasdasar 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
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
Polimorfisme
•
Polimorfisme berart i mempunyai banyak bent uk•
Salah sat u bent uk polimorfisme adalah overloading t erhadap fungsi dan operat orPolimorfisme semacam ini disebut polimorfisme saat kompilasi (compile t ime polimorphism)
•
Bent uk polimorfisme lainnya adalah polimorfisme saateksekusi (execut ion t ime polimorphism), disebut juga lat e binding at au dynamic binding
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
•
Bisa t erjadi masalah pada kelas Cucu bila
pendeklarasian dilakukan sepert i pada cont oh
didepan
OrangTua
Cucu
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{};
TEM PLATE FUNGSI DAN KELAS
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
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) {
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 yangTugas
•
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
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>
void t ukar(T * x)
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) {
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 ;