• Tidak ada hasil yang ditemukan

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

N/A
N/A
Protected

Academic year: 2021

Membagikan "ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari"

Copied!
46
0
0

Teks penuh

(1)

ALGORITMA DAN

PEMROGRAMAN 2

(2)

MATERI

Teks/stringPointerFileStrukturKelas/ClassKonstruktor dan Destruktor

Kelas dan Obyek

Overloading Operator

Inheritance (Pewarisan)

Polimorfisme

Template Fungsi dan Kelas

• Sort

(3)

INHERITANCE (PEWARISAN)

Pertemuan 11

(4)

Inheritance

Inheritance (Pewarisan) adalah

sifat dari suatu kelas yang

dapat mewariskan anggota

data maupun fungsi anggota ke

kelas lain

(5)

Inheritance

Kelas yang mewarisi sifat dari kelas

lain disebut dengan

kelas turunan

(derived class)

Kelas yang mewariskan sifat ke kelas

lain disebut dengan

kelas dasar (base

class)

(6)

Inheritance

Keuntungan dari inheritance adalah

memungkinkan penggunaan kembali

kode yang sudah teruji benar,

sehingga tidak perlu membuat kode

yang sama setiap kali membuat

(7)

Penentu

Inheritance/Pewarisan

Terdiri dari 3 macam penentu

pewarisan, yaitu :

1. Private

2. Protected

3. Public

(8)

1. Penentu Pewarisan Private

Sintaks:

class NamaKelasTurunan : Private NamaKelasDasar

atau

class NamaKelasTurunan : NamaKelasDasar

Contoh:

class OrangTua class Anak : Private OrangTua

{ {

(9)

1. Penentu Pewarisan Private

Sifat:

Semua anggota data dan fungsi anggota yang

bersifat public dan protected pada kelas dasar

akan diwariskan

ke kelas turunan dengan sifat

private

Anggota data dan fungsi anggota pada kelas

dasar yang bersifat private

tidak diwariskan

(10)

2. Penentu Pewarisan Protected

Sintaks:

class NamaKlsTurunan : Protected NamaKelasDasar

atau

class NamaKelasTurunan : NamaKelasDasar

Contoh:

class OrangTua class Anak : Protected OrangTua

{ {

(11)

2. Penentu Pewarisan Protected

Sifat:

Semua anggota data dan fungsi anggota yang

bersifat public dan protected pada kelas dasar

akan diwariskan

ke kelas turunan dengan sifat

protected

Anggota data dan fungsi anggota pada kelas

dasar yang bersifat private

tidak diwariskan

(12)

Pewarisan

Contoh Soal 01:

(13)

Program contoh 01

(14)

Algoritma...?????

Pseudocode...??????

(15)

3. Penentu Pewarisan Public

Sintaks:

class NamaKlsTurunan : Public NamaKelasDasar

atau

class NamaKelasTurunan : NamaKelasDasar

Contoh:

class OrangTua class Anak : Public OrangTua

{ {

(16)

3. Penentu Pewarisan Public

Sifat:

Semua anggota data dan fungsi anggota yang

bersifat public dan protected pada kelas dasar

akan diwariskan

ke kelas turunan tanpa

perubahan (protected diwariskan menjadi

protected, public diwariskan menjadi public)

Anggota data dan fungsi anggota pada kelas

dasar yang bersifat private

tidak diwariskan

(17)

Pewarisan

Contoh Soal 02:

Menampilkan info basis/dasar dan info

turunan “dijalankan”

(18)

Program contoh 02

(19)

Tugas

Algoritma...?????

Pseudocode...??????

Dikumpulkan hari rabu, 27 Mei 2015

Apabila dikumpulkan hari rabu maka mendapat

bonus +10

(20)

Program contoh 03

(21)

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

(22)

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. Mengubah penentu akses menjadi

protected

2. Memanggil konstruktor kelas dasar

pada definisi konstruktor kelas

(23)

Akses ke Anggota Data yang bersifat

Private

1. Mengubah penentu akses menjadi

protected

– Dengan mengubah penentu akses menjadi

protected, maka anggota data bisa diakses dari kelas turunan

– Digunakan jika anggota data dipakai dalam proses selanjutnya di kelas turunan

2. Memanggil konstruktor kelas dasar pada

definisi konstruktor kelas turunan

– Penentu akses di kelas dasar tetap private

– Dipakai jika anggota data tidak dipakai pada

proses selanjutnya di kelas turunan. Misal hanya dicetak melalui kelas dasar

(24)

Pewarisan Bertingkat

Pada pewarisan bertingkat, terdapat dua

atau lebih kelas turunan

(25)

Pewarisan Bertingkat

Dalam kasus nama fungsi anggota ketiga

kelas sama, maka harus menggunakan

operator resolusi lingkup (::) untuk

menyatakan kepemilikan

Contoh:

OrangTua::lihat()

fungsi lihat() milik

kelas OrangTua

(26)

Pewarisan Berganda

Dalam pewarisan berganda, sebuah kelas dapat

mewarisi sifat lebih dari satu kelas

Contoh:

Kelas Anak mewarisi sifat dari kelas Ayah dan

kelas Ibu

(27)

Pewarisan Berganda

• Dalam kasus nama fungsi anggota pada kedua kelas

dasar sama, maka untuk mengakses harus menggunakan operator resolusi lingkup (::) yang menandakan

kepemilikan

• Contoh:

Fungsi anggota di kelas Ayah dan Ibu sama yaitu lihat(). Cara memanggil fungsi:

Anak anak1;

anak1.Ayah::lihat(); anak1.Ibu::lihat()

(28)

POLIFORFISME

Pertemuan 12

(29)

Fungsi Virtual

Fungsi virtual adalah fungsi anggota yang

dideklarasikan dengan menggunakan

keyword “Virtual”

Guna fungsi virtual:

– Misal pada kelas dasar terdapat fungsi virtual.

• Kemudian fungsi tersebut dideklarasikan lagi pada kelas turunan.

– Misalnya lagi sebuah pointer diciptakan untuk menunjuk ke kelas dasar.

• Selanjutnya pointer dapat memilih obyek yang tepat kalau fungsi anggota virtual tersebut dipanggil

(30)

Keterangan Fungsi Virtual

Fungsi virtual halo() didefinisikan di kelas

OrangTua (kelas dasar)

Fungsi halo() juga didefinisikan di kelas

Anak dan kelas Cucu

Sebuah pointer ot1 diciptakan yang

bertipe OrangTua

Pointer kemudian diatur untuk menunjuk

(31)

Keterangan Fungsi Virtual

Ketika fungsi anggota lihat() dipanggil dari

pointer, ternyata yang muncul adalah fungsi

lihat() dari kelas OrangTua

Ketika fungsi anggota halo() dipanggil dari

pointer, ternyata yang muncul adalah fungsi

halo() dari kelas Anak

Hal ini terjadi karena halo() adalah fungsi virtual

Hal serupa juga terjadi ketika pointer menunjuk

(32)

Polimorfisme

• Polimorfisme berarti mempunyai banyak bentuk

• Salah satu bentuk polimorfisme adalah overloading terhadap fungsi dan operator

Polimorfisme semacam ini disebut polimorfisme saat kompilasi (compile time polimorphism)

• Bentuk polimorfisme lainnya adalah polimorfisme saat

eksekusi (execution time polimorphism), disebut juga late binding atau dynamic binding

• Polimorfisme macam ini mampu menangani dua atau lebih obyek pada saat eksekusi dengan menyesuaikan terhadap lingkungan obyek yang bersangkutan

(33)

Fungsi Virtual Murni

• Fungsi virtual pada kelas dasar tidak pernah diakses sehingga tidak berguna

• Hal ini karena tidak pernah ada penciptaan obyek dari kelas dasar

• Contoh:

Fungsi halo() pada kelas OrangTua tidak pernah diakses karena obyek berkelas OrangTua tidak pernah diciptakan

• Karena tidak berguna, isi fungsi virtual bisa dihapus dengan cara menambahkan = 0 setelah tanda ()

• Contoh:

virtual void halo() = 0;

(34)

Kelas Abstrak

• Kelas Abstrak adalah kelas yang dideklarasikan namun tidak untuk menciptakan obyek

• Ciri kelas abstrak:

Mengandung paling tidak satu fungsi virtual murni

• Contoh:

Kelas OrangTua pada contoh program merupakan kelas abstrak

• Kelas abstrak tidak dapat dipakai untuk menciptakan obyek, sehingga pernyataan berikut tidak diperkenankan:

OrangTua ot1;

Namun penciptaan pointer bertipe kls abstrak dpt dilakukan

(35)

Kelas Dasar Virtual

Gambar pewarisan bertingkat

Bisa terjadi masalah pada kelas Cucu bila

pendeklarasian dilakukan seperti pada contoh

didepan

OrangTua

Cucu

Anak2 Anak1

(36)

Kelas Dasar Virtual

Contoh:

Misal pada kelas OrangTua terdapat anggota data “nama” bertipe protected. Anggota data ini akan diwariskan ke Anak1 dan Anak2. Karena kelas Cucu merupakan gabungan dari kelas Anak1 dan

Anak2, maka akan terdapat dua anggota data “nama” pada kelas Cucu.

Cara mengatasi : dengan menggunakan keyword

virtual pada saat pendeklarasian kelas turunan

– Contoh:

class Anak1 : virtual public OrangTua{}; class Anak2 : virtual public OrangTua{};

Dengan menggunakan keyword virtual, hanya akan terdapat satu anggota data untuk kedua kelas turunan

(37)

TEMPLATE FUNGSI DAN KELAS

Pertemuan 13

(38)

Pendahuluan

Template mirip dengan overloading, yaitu

digunakan pada fungsi-fungsi yang

menangani tugas yang sama tapi berbeda

tipe data dan jumlah parameternya

Bedanya:

pada overloading, kode harus ditulis disetiap

fungsi

pada template, kode hanya ditulis sekali yaitu

di template

(39)

Template Fungsi

• Sintaks membuat template:

template <class NamaPengenal>

TipeNilaiBalik NamaFungsi(NamaPengenal parameter, …) {

… }

• Contoh:

template <class T> void tukar(T &x, T &y) {

T tmp; tmp = x; x = y; y = tmp; }

(40)

Template Fungsi

• Setelah membuat template, prototipe fungsi harus dibuat

• Prototipe fungsi harus sama persis dengan definisi fungsi pada template termasuk tipe nilai balik, jumlah dan tipe parameter

• Contoh:

void tukar(int &x, int &y);

void tukar(double &x, double &y);

• Seperti pada overloading, template akan bekerja sesuai dengan jumlah dan tipe parameter dari fungsi yang

(41)

Tugas

Apa yang Anda diketahui tentang NILAI

BALIK

Dikumpulkan hari rabu, 27 Mei 2015

Apabila jawaban Anda sama maka yang

sama nilainya kan dibagi sejumlah

jawaban yang sama

Apabila dikumpulkan hari rabu maka

mendapat bonus +10

(42)

Template dengan Bermacam Tipe

• Sintaks:

template <class NamaPengenal1, class NamaPengenal2> TipeNilaiBalik NamaFungsi(NamaPengenal1 parameter1, NamaPengenal2 parameter2)

{ … }

• Contoh:

template <class A, class B>

int lebih_dari(A data[], B x, int jumdata) {

… }

(43)

Overloading terhadap Template

Fungsi

• Cara overloading terhadap template fungsi sama dengan overloading terhadap fungsi

• Caranya: membuat bermacam template dengan nama sama tapi berbeda kegunaannya, berbeda jumlah dan tipe parameternya

• Contoh:

template <class T> void tukar(T &x, T &y)

{T tmp; tmp = x; x = y; y = tmp;}

template <class T> void tukar(T x)

{cout << "Nilai x : " << x << endl;}

template <class T> void tukar(T *x)

(44)

Template Kelas

Template dalam kelas digunakan untuk

mendefinisikan anggota data dan fungsi

anggota

Sintaks:

template <class NamaPengenal>

class NamaKelas

{

..

};

(45)

Template Kelas

• Contoh:

template <class Templ> class Aritmatika

{

public:

Templ penjumlahan(Templ x, Templ y); Templ pengurangan(Templ x, Templ y); };

template <class Templ>

Templ Aritmatika<Templ>::penjumlahan(Templ x, Templ y) {

return(x + y); }

(46)

Template Kelas

template <class Templ>

Templ Aritmatika<Templ>::pengurangan(Templ x, Templ y)

{

return(x - y); }

• Contoh pembuatan obyek: Aritmatika<int> jum_int;

Aritmatika<float> jum_float; Aritmatika<int> kur_int;

Referensi

Dokumen terkait

Dari hasil penelitian selama 3 Bulan yang didapat menunjukan bahwa proyek mengalami keterlambatan dari segi waktu, namun dari segi biaya proyek yang dikeluarkan

Informasi akuntansi pertanggungjawaban merupakan informasi yang penting dalam proses pengendalian manajemen karena informasi tersebut menenkankan hubungan antara informasi

Syukur kepada Allah yang telah melimpahkan karunianya hingga studi saya berujung pada penulisan karya ilmiah ini yaitu Tesis yang diajukan sebagai syarat kelulusan

Pesaing untuk usaha yang sejenis untuk daerah kota Medan m tidak memang termasuk banyak namun belum ada orang yang mendirikan usaha “Rumah Makan Family” yang menjual Nasi

Tahap analisis morfologi pada preprocessing ini dilakukan dengan menerapkan sistem MorphInd sebagai penganalisis morfologi bahasa Indonesia yang akan

Dari teh sini muncullah aliran sanseke (tiga keluarga Sen) yaitu, Urasenke, Omotesenke, dan Mushakojisenke. Urasenke merupakan salah satu dari tiga aliran chanoyu. Aliran

Penelitian ini dapat dijadikan bahan pertimbangan untuk mengambil kebijaksanaan dimasa yang akan datang yaitu bagian Humas, juga sebagai masukan untuk perusahaan

Dengan adanya Undang-Undang Nomor 23 tahun 2004 tentang penghapusan kekerasan dalam Rumah tangga ini menjadi payung hukum bagi korban dan membuat efek jera bagi pelaku tindak