6
Bahasa Pemrograman II Modul 2 : Inheritance dan Interface Tujuan Praktikum Setelah praktikum modul ini, praktikan diharapkan : - Mengetahui pengertian dan tujuan inheritance dan interface pada bahaasa pemrograman C#. - Mengetahui maksud dan implementasi penggunaan inheritance dan interface. Dasar Teori Pewarisan (inheritance) adalah kemampuan class untuk menurunkan sifat-sifat ke class turunannya. Dalam inheritance terjadi pewarisan properti dan perilaku dari kelas induk ke kelas anak. Misalnya class turunan dapat menggunakan properti dan method yang ada pada class induknya. Semua properti yang dimiliki oleh kelas induk akan dimiliki oleh kelas anak dengan sendirinya sehingga terjadi “Code Sharing” antara class induk dan class anak. Kelas yang dijadikan kelas induk merupakan kelas yang general sedangkan kelas anak merupakan kelas induk yang memiliki sesuatu yang spesifik. Dalam hal ini suatu class induk/parent disebut sebagai super class dan anak/child disebut sebagai sub class. Subclass didapatkan dari proses spesialisasi superclass. Gambar 1 Hierarki Class Struktur pewarisan: <access_modifier> class <nama_class_turunan> : <nama_class_induk> Berdasarkan struktur pewaridan diatas, pembuatan class melalui inheritance pada C# menggunakan operator “:”. Misalkan kita membuat class mobil, motor dan kereta api dari class kendaraan. Kendaraan Mobil Motor Kereta Api

modul2-BP2

Embed Size (px)

DESCRIPTION

pratikum bp 2

Citation preview

  • Bahasa Pemrograman II Modul 2 : Inheritance dan Interface

    Tujuan Praktikum Setelah praktikum modul ini, praktikan diharapkan :

    - Mengetahui pengertian dan tujuan inheritance dan interface pada bahaasa

    pemrograman C#.

    - Mengetahui maksud dan implementasi penggunaan inheritance dan interface.

    Dasar Teori Pewarisan (inheritance) adalah kemampuan class untuk menurunkan sifat-sifat ke

    class turunannya. Dalam inheritance terjadi pewarisan properti dan perilaku dari kelas induk ke kelas anak. Misalnya class turunan dapat menggunakan properti dan method yang ada pada class induknya. Semua properti yang dimiliki oleh kelas induk akan dimiliki oleh kelas anak dengan sendirinya sehingga terjadi Code Sharing antara class induk dan class anak. Kelas yang dijadikan kelas induk merupakan kelas yang general sedangkan kelas anak merupakan kelas induk yang memiliki sesuatu yang spesifik.

    Dalam hal ini suatu class induk/parent disebut sebagai super class dan anak/child disebut sebagai sub class. Subclass didapatkan dari proses spesialisasi superclass.

    Gambar 1 Hierarki Class

    Struktur pewarisan: class :

    Berdasarkan struktur pewaridan diatas, pembuatan class melalui inheritance pada C#

    menggunakan operator :.

    Misalkan kita membuat class mobil, motor dan kereta api dari class kendaraan.

    Kendaraan

    Mobil Motor Kereta Api

  • Berdasarkan hierarki class di atas, yang menjadi superclass adalah kendaraan.

    Mobil,motor dan kereta api adalah subclass dari kendaraan. Contoh diatas memperlihatkan

    bahwa class mobil, motor dan kereta api dibuat melalui proses inheritance class kendaraan.

    Inisialisai objek dari kelas turunan sama dengan inisialasi objek pada umunya.

    mobil m= new mobil();

    motor mo = new motor();

    kereta_api ka = new kereta_api();

    Inheritance akan menciptakan hirarki kelas sehingga tercipta relasi antar kelas. Kelas

    yang menjadi kelas induk pertama sekali disebut dengan kelas root. Kelas ini berdiri

    dengan sendirinya (tidak diturunkan dari kelas lainnya). Dari kelas root ini bisa diturunkan

    lagi menjadi kelas-kelas lainnya. Kelas baru bisa diciptakan dengan menurunkan kelas

    yang diturunkan dari kelas root dan begitu seterusnya. Hal ini akan membentuk inheritance

    chain yang menunjukkan urutan kelas-kelas tersebut seperti pada gambar dibawah ini.

    Kelas C diturunkan menjadi kelas C11 dan C12. Kelas C11 diturunkan menjadi kelas

    C21, C22, C23. Kelas C31diturunkan dari kelas C22. Hubungan turunan dalam dalam

    inheritance chain ini bersifat transitive. C11 dan C12 merupakan direct subclass dari kelas C.

    Kelas C21, C22, dan C23 merupakan indirect subclass dari kelas C. Inheritance chain ini hanya

    bisa dilihat secara linear ke atas. Artinya kelas C21 bisa mengetahui kelas-kelas yang

  • menjadi nenek moyangnya. Artinya kelas C21 akan mewarisi seluruh properti yang method

    yang dimiliki oleh kelas-kelas nenek moyangnya. Namun kelas C21 tidak mengetahui tentang

    keberadaan saudara-saudaranya yaitu kelas C22 dan C23.

    Interface Interface merupakan kelas yang tidak memiliki kode program ataupun data.Interface

    hanya berisi nama-nama method tapi tidak ada implementasi kodenya. Oleh karena tidak memiliki data dan implementasi kode, objek tidak bisa diciptakan dari interface. Larangan dalam interface :

    Mendefinisikan property/attribut Mendefinisikan construktor atau destruktor Menentukan acces modifier pada method Menempatkan type data pada interface Diturunkan dari class atau struct

    Saran untuk pendefinisian interface dimulai dengan I. Method pada interface tidak perlu

    menggunakan acces modifier karena semua method akan bersifat public.

    interface iweapon { string shoot(); string reload(); } class shotgun : iweapon { string iweapon.shoot() { .... } string iweapon.reload() { ... } }

    Objek tidak bisa diciptakan dari sebuah interface. Kegunaan interface memang bukan

    sebagai cetakan untuk membuat objek akan tetapi lebih berfungsi sebagai kontrak.

    Interface harus diimplementasikan oleh kelas lain agar dapat berguna.

    Kelas lain yang mengimplementasikan sebuah interface harus mengimplementasikan

    seluruh method yang dideklarasikan dalam interface tersebut. Error akan muncul jika ada

    sebuah method yang dideklarasikan dalam interface tidak didefinisikan pada kelas yang

    mengimplementasikan interface tersebut.

    Sebuah kelas bisa mengimplementasikan lebih dari satu interface. Jika sebuah

    kelas mengimplementasikan lebih dari satu interface, maka setiap method yang ada dalam

    interfaceyang diimplementasikan harus didefinisikan dalam kelas yang

    mengimplementasikan interface tersebut. Hal ini berbeda dengan inheritance dimana pada

    inheritance sebuah kelas hanya boleh diturunkan dari 1 kelas lain, tidak boleh lebih

  • Abstract class Abstract class merupakan definisi class yang belum lengkap sehingga tidak dapat

    diinstansiasi. Abstract class berfungsi menghindari duplikasi data pada interface. Method

    pada abstaract class dapat berupa abstract method

    Perbedaan Interface dan Abstract Class Cara penggunaan Abstract Class adalah diturunkan, sedangkan cara penggunaan

    Interface adalah diimplementasikan.

    Pada C# lambang untuk menurunkan class dan menggunakan interfaces sama-sama

    menggunakan tanda : (titik dua). Tetapi untuk membedakan biasanya nama

    interface diawali dengan huruf I di depan misal: IEnumerable, IDisposable, dll.

    Sebuah class hanya dapat diturunkan dari satu abstract class tapi dapat menggunakan

    lebih dari satu interfaces.

    Method dan member variable pada abstract class boleh sudah ada isinya, sedangkan

    pada interfaces semua belum ada implementasinya.

    Pada Abstract Class semua method / member variable yang abstract harus

    diimplementasikan di class turunannya.

    Pada Interface semua member variable dan method harus diimplementasikan di class

    yang menggunakan interface tersebut.

    Access Modifier pada method dan member variable di Interface secara implisit adalah

    public.

    Sealed class dan sealed method Sealed class merupakan class yang tidak dapat diturunkan/diwariskan. Pada sealed

    class terdapat sealed method yang juga tidak dapat diturunkan. Penguncian kelas dilakukan

    dengan menggunakan keyword sealed seperti contoh dibawah ini.

    sealed class armor { sealed string buy(); }

    Penggunaan keyword sealed tersebut mengunci kelas yang bersangkutan untuk

    tidak bisa mewariskan properti dan method-nya ke kelas lain. Selain berlaku terhadap kelas,

    keyword sealed juga berlaku untuk method. Method yang menggunakan kata kunci sealed

    tidak akan diwariskan ke kelas turunannya.

  • Instruksi Praktikum 1. Bukalah IDE visual studio yang telah diinstal sebelumnya. Kemudian pilih New

    Project (ctrl + Shift + N). 2. Kemudian pilih console aplication dan beri nama Praktikum02 kemudian OK. 3. Buat kelas baru melalui menu Project > Add Class. Beri nama Inheritance 4. Salinlah kode berikut pada kelas Inheritance :

    5. Pada program utama salinlah kode berikut :

  • 6. Simpan dan jalankan (Ctrl+F5) proram tersebut. 7. Hasilnya seperti :

    Tugas Praktikum Kerjakan tugas yang diberikan oleh asisten/pengawas praktikum selama sisa

    jam praktikum. Kumpulkanlah jika telah selesai.