Inheritance, Polymorphism dan Interface di C#

Inheritance, Polymorphism dan Interface di C#
Inheritance, Polymorphism dan Interface di C# -  Belajar bahasa pemrograman memang harus dari dasar, jika paham tentang dasar dari suatu bahasa pemrograman maka dalam membuat dan pengaplikasiannya juga mudah, apalagi jika seorang pemrograman harus wajib mengenal dasar-dasarnya guna membuat aplikasi atau software yang stable atau aplikasi normal. setelah pada postingan kita membahas dasara pemrograman C# yaitu tentang Class , Object dan Encapsulation , yang amat berguna dalam membangun sebuah aplikasi . Jika kalian belum paham apa itu Class , object dan encapsulation , Bisa baca artikelnya 


Pada pokok pembahasan kali ini kita akan mengenal apa itu inheritance , apa itu polymorphism dan interface . Disini akan dibahas secara mendetail jadi simak baik-baik. 

A. SPESIALISASI DAN GENERALISASI

Spesialisasi dan generalisasi mempunyai arti yang berlawanan. Spesialisasi memperhatikan ciri-ciri khusus pada sebuah object sedangkan generalisasi memperhatikan cirri-ciri umum dari object. Meski begitu keduanya saling berkolerasi secara timbal balik dan berurutan. Bersifat timbal balik karena spesialisasi adalah bagian depan dari koin generalisasi.

Contohnya sewaktu disebutkan BMW adalah mobil, artinya BMW adalah salah satu merk khusus (specialized) dari mobil, dan pasti semua ciri mobil yaitu: beroda empat, memiliki mesin, berbahan bakar minyak, mempunyai kemudi dll. Tetapi BMW mempunyai cirri atau karakteristik yang lebih khusus lagi yaitu lebih dekat ke mobil jenis sedan. Panther juga salah satu merk mobil, dan Panther juga memiliki karakteristik mobil sama dengan BMW, tetapi mereka dibedakan dengan karakteristik khusus dari Panther seperti jenisnya, Panther cenderung membuat mobil berjenis station wagon. Jadi BMW dan Panther adalah spesialisasi dari mobil, sedangkan mobil adalah generalisasi dari BMW dan Panther.

B. INHERITANCE

Inheritance adalah kemampuan sebuah objek untuk meng-inherit atau mewarisi data dan fungsi-fungsi dari parent class-nya. Dengan menggunakan Inheritance, Anda dapat membuat class baru dari class-class yang sudah ada tanpa perlu menciptakannya dari awal.

Parent Class yang akan di-INHERIT oleh class yang baru disebut Base Class, sedangkan class baru yang akan mewarisi semua “warisan” data dan fungsi dari Base Class disebut Derived Class.
Gambar 5.1 Base Class dan Derived Class
Jika dimasukkan ke dalam program, penulisan sintaks-nya adalah:
Untuk Base Class:
Sintax Base Class
Untuk Derived Class:
Sintax Derived Class

Derived class akan meng-inherit segala hal yang dimiliki oleh base class-nya kecuali constructor dan destructor-nya. Seluruh public member dari base class secara implicit juga menjadi public member dari derived class. Sedangkan private member dari base class, meskipun juga di-inherit oleh derived class, hanya dapat diakses oleh base class itu sendiri.


1. Base Class Member

Sekarang kita akan melihat suatu access modifier yaitu protected. Member dari suatu derived class dapat mengakses member protected dari base class-nya seperti halnya mengakses member base class yang public. Untuk lebih jelasnya, perhatikan contoh berikut:
Class Member
Akan tetapi, member protected dari sebuah class tidak dapat diakses oleh class lain yang tidak derive dari base class tadi. Contohnya pada kode program berikut:
Class Other

Class other tidak men-derive class base, sementara “nama” adalah member protected dari class base. Kode program ini tidak akan berjalan dan akan muncul pesan error ‘Base.nama’ is inaccessible due to its protection level pada saat di compile.

Jika sebuah class meng-inherit sebuah protected member, secara implicit protected member tadi juga menjadi protected member dari derived class. Akibatnya, protected member dari suatu base class dapat diakses oleh semua class yang derived baik langsung maupun tidak langsung dari base class tersebut. Berikut adalah contoh dari class yang inherit dari class derived yang kita miliki. Class ini tetap dapat mengakses member protected (dalam hal ini “nama”) dari base class kita, yaitu Base.
Class DrivedMore
2. Base Class Constructor

Sebuah derived class dapat memanggil constructor dari base class-nya. Ini dilakukan dengan menggunakan keyword base
Class Constructor
Tanda titik dua yang diikuti constructor dari base class disebut sebagai constructor initializer.
Selanjutnya, perhatikan contoh codedengan constructor tanpa parameter berikut:
Class Constructor
Untuk memanggil consturctor dari base class anda dapat menulis constructor initialize secara eksplisit seperti:
Class Constructor
Akan tetapi, jika derived class tidak secara eksplisit memanggil constructor dari base class diatas, C# compiler akan secara implicit memanggil constructor initialize. Contoh kode program berikut adalah valid:
Class Constructor


C. IMPLEMENTASI METHOD

Hal yang menarik dari inheritance adalah anda dapat mendefinisi ulang suatu implementasi methid dari sebuah base class jika method base class tersebut didesain untuk dapat di override.

1. Virtual Method
Untuk dapat membuat sebuah method dari suatu base class bisa di override oleh derived class-nya, method tersebut harus diberi keyword virtual. Contoh:
Virtual Method
Jadi, virtual method adalah method yang secara polymorphism dapat di override oleh derived class. Method yang tidak virtual, tidak dapat di derive oleh derived class. Beberapa hal yang harus diperhatikan mengenai virtual method adalah:
  • Sebuah virtual method harus ada implementasinya di base class, jika tidak ada maka program akan error. 
  • Sebuah virtual method tidak dapat diberi access modifier private 
  • Virtual method tidak dapat dideklarasikan sebagai static method

2. Override Method

Jika pada base class method yang boleh di override harus diberi keyword virtual, maka pada derived class, method yang akan meng-override method base class tadi harus diberi keyword override. Contoh:
Override Method
Seperti halnya pada virtual method, pada override method juga ada beberapa hal yang perlu diperthatikan: 
  • Sebuah override method harus ada implementasinya di base class, jika tidak ada maka program akan error.
  • Signature dari override method harus sama dengan virtual method yang akan di override 
  • Seperti halnya Virtual method, override method juga tidak boleh static dan tidak boleh private

3. Keyword New

Keyword new pada method derived class berfungsi untuk menyembunyikan method yang di derived dari base class. Method yang di derived dari base class di ganti oleh method yang memiliki keyword new. Keyword new dapat menyembunyikan method virtual maupun non-virtual dari base class. Contoh:
Keyword New


D. SEALED CLASS

Dengan menggunakan keyword “sealed” pada class, maka class tersebut tidak dapat di-inherit oleh class lainnya. Sintaks:
Sintax Sealed Class

E. ABSTRACT CLASS

Abstract class digunakan untuk menyediakan sebagian implementasi saja, implementasi lebih jauh akan disediakan oleh concrete class yang men-derived abstract class tersebut. Hal ini akan sangat berguna untuk reusability implementasi suatu interface oleh banyak derived class. Abstract class ditandai dengan keyword abstract. Sintaks:
Abstract Class
Perlu dicatat bahwa sebuah abstract class tidak dapat di-instantiate. Anda tidak dapat membuat object dari sebuah abstract class. Jadi class tersebut benar-benar hanya sebagai base class.


F. POLYMORPHISM

Ada dua aspek mendasar dari inheritance, yang pertama adalah reusability (kemampuan menggunakan kembali kode yang telah dibuat secara efisien. Aspek kedua adalah polymorphism. Poly berarti banyak sedangkan morp adalah bentuk. Polymorphism berarti mempunyai banyak bentuk. Polymorphism adalah kemampuan untuk menyembunyikan berbagai implementasi yang berbeda dibelakang sebuah interface.
Dalam MSDN Polymorphism adalah kemampuan class-class untuk menyediakan implementasi yang berbeda-beda dari method-method yang dipanggil dengan nama yang sama. Polymorphism memperbolehkan sebuah method atau class untuk dipanggil tanpa memperhatikan implementasi spesifik apa yang telah ditetapkan.
Kita kembali ke contoh tentang remote control dan TV. Sebuah remote control dapat digunakan untuk beberapa jenis televisi (implementation) yang mendukung interface spesifik bagaimana remote control tersebut di desain.
Contoh lain misal perusahaan operator telepon mengirim sinyal dering ke telepon kita untuk memberitahu ada panggilan masuk, mereka tidak mengetahui jenis dan model telepon yang kita gunakan, mereka juga tidak tahu nada dering yang kita gunakan apakah akan mengeluarkan suara „kring‟ atau suara lagu. Perusahaan operator telepon hanya mensyaratkan kita memiliki telepon standar dan semua „instance‟ dari telepon yang mampu memberitahu kita dengan cara apapun bila ada sinyal telepon masuk. Ketika perusahaan operator telepon mengirim sinyal kepada telepon kita untuk berbunyi, mereka cuma mengharapkan telepon kita berbunyi tanpa peduli telepon kita model apa. Jadi perusahaan operator telepon memperlakukan telepon kita secara polymorphically.

G. INTERFACE

Dalam OOP yang terpenting adalah apa yang bisa dilakukan oleh object, bukan bagaimana object melakukan sesuatu. Jadi ketika kita bicara object, fokusnya adalah “bisa apa sin?”. Misalnya saya punya mesin cuci, bisa apa sih mesin cuci saya? “Mesin cuci dirumah saya hebat, baju yang kotor bisa bersih”, Yang lain menimpali. “mesin cuci dirumah saya baju dimasukkan keluar udah kering”. Begitulah kira-kira, kita tidak begitu peduli bagaimana mesin itu bekerja, yang penting baju kita bersih.
Poin penting yang ingin disampaikan disini adalah ada semacam tuntutan bahwa suatu object harus memenuhi kemampuan tertentu. Object dikatakan sebagai mesin cuci jika dia mampu mencuci. Siapapun yang pernah menggunakan mesin cuci akan dengan mudah mengerti bagaimana menggunakan mesin cuci, apapun merknya, dan terkadang juga apapun bahasanya. Ada semacam kesepakatan antar produsen mesin cuci, bahwa mesin cuci harus mempunyai fungsi minimal seperti ini. Kesepakatan semacam ini dalam C# disebut sebagai Interface.
Interface adalah tipe special pada C# yang digunakan untuk mendefinisikan spesifikasi. Interface didefinisikan dengan menggunakan keyword interface. Interface diimplementasikan oleh class. Class yang mengimplementasikan interface harus menyediakan body untuk semua member interface. Semua member interface adalah public dan abstract. Penulisan interface pada C# memiliki aturan yang disepakati yaitu mengawali penulisan identifier interface dengan huruf i kapital (I). Contoh: IMahasiswa, IPegawai, INelayan, dll. Berikut sintaks dan contoh deklarasi interface:
Sintax Interface dan pengaplikasian coding

Tanda titik dua (:) digunakan untuk menunjukkan bahwa class mengimplementasikan interface tertentu. Berikut sintaks implementasi interface dalam class:
Sintak Implementasi Interface

Demikian pembahasan kali in berhubungan dengan pemrograman c# atau CShape yaitu Inheritance, Polymorphism dan Interface. Semoga artikel ini membantu kalian semua, jangan pernah malas untuk belajar sesuatu dari dasar. Sekian

Terima Kasih.



4 Responses to "Inheritance, Polymorphism dan Interface di C#"

  1. :3 weh kalau belajar tentang computer disini aja deh

    ReplyDelete
  2. bermanfaat sekali !! thanks uda di share gan :3

    kunjungi balik Alfin Fik Blog sapa tau bisa share ilmu hehehe

    ReplyDelete

Silahkan Berkomentar Dengan Sopan.