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

Private

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