Upload
mardaleni
View
3
Download
0
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.