Minggu, 29 September 2013
Polimorfisme
Ada dua aspek mendasar dari inheritance, yang pertama adalah reuseability. Reuseability adalah kemampuan menggunakan kembali coding yang telah dibuat secara efisien. Contoh ketika Anda membuat logika pemrograman dari class window yang merupakan base class-nya.
Aspek kedua adalah polymorphism; yang berarti mempunyai banyak bentuk atau lebih tepatnya kemampuan untuk menggunakan berbagai tipe bentuk tanpa mengorbankan hal-hal detailnya.
Istilah Polymorphism memiliki kesan sulit dan kompleks, tetapi sebenarnya sederhana. Analoginya adalah sebagai berikut, ketika sebuah perusahaan telepon atau provider telepon mengirimkan sinyal ke Anda (dering telepon), mereka tidak mengetahui telepon apa yang Anda gunakan, bisa model lama dengan dering kuno, bisa telepon seluler dengan dering musik mp3, TV Phone, PDA Phone, dan sebagainya. Provider hanya mengetahui bahwa masing-masing memiliki base type telepon dan method untuk berdering. Ketika provider mengirimkan sinyal, mereka hanya berharap bahwa telepon berdering tanpa peduli jenis telepon yang digunakan. Dengan demikian, provider telepon telah memperlakukan telepon Anda secara polymorphism.
Dari contoh program inheritance di atas Anda dapat lihat bahwa, listbox is a window karena listbox turunan dari window, button is a window, dan kita berharap dapat memperlakukan keduanya sebagai window. Sama dengan kucing dan anjing yang diturunkan dari class mamalia, Anda dapat mengatakan bahwa kucing dan anjing sama-sama mamalia.
Misalkan Anda mempunyai banyak control di collection untuk digambar ke window dan mengharapkan ketika memanggil method gambarWindow() pada control maka control tersebut akan tergambar sesuai dengan tipe object-nya (misalnya ListBox, RadioButton, Command, dan lain-lain)
Anda dapat mengimplmentasikan polymorphism dengan dua cara, yaitu:
1. Membuat method dengan keyword Overridable pada base class (class induk). Overridable method adalah method yang akan di-override di class turunannya.
2. Membuat class turunan yang mempunyai method dengan keyword overrides yang mengganti isi dari method dengan keyword virtual yang ada pada base class-nya.
Method Overriding adalah method dengan nama yang sama, tipe dan jumlah parameternya juga sama, namun implementasiya berbeda dan digunakan untuk meng-override method yang ada pada base class.
Penggunaan prinsip polymorphism pada Visual Basic .NET dapat dilihat pada contoh coding program di bawah ini. Pertama, buat class dengan nama window yang akan digunakan sebagai base class.
Public Class window
Private _kiri As Integer
Public Property kiri() As Integer
Get
Return _kiri
End Get
Set(ByVal value As Integer)
_kiri = value
End Set
End Property
Private _atas As Integer
Public Property atas() As Integer
Get
Return _atas
End Get
Set(ByVal value As Integer)
_atas = value
End Set
End Property
Public Sub New(ByVal kiri As Integer, ByVal atas As Integer)
Me.kiri = kiri
Me.atas = atas
End Sub
Public Overridable Function GambarWindow() As String
Return String.Format("Menggambar Control pada posisi ({0},
{1})", kiri, atas)
End Function
End Class
Program 1 Base class polymorphism Visual Basic .NET
Selanjutnya buat class turunannya, yaitu listBox dan button.
Public Class listBox
Inherits window
Private _isi As String
Public Property isi() As String
Get
Return _isi
End Get
Set(ByVal value As String)
_isi = value
End Set
End Property
Public Sub New(ByVal kiri As Integer, ByVal atas As Integer,
ByVal isi As String)
MyBase.New(kiri, atas)
Me.isi = isi
End Sub
Public Overrides Function GambarWindow() As String
Return String.Format("Menggambar ListBox pada posisi ({0},
{1}) dan isi content: {2}", kiri, atas, isi)
End Function
End Class
Program 2 Derived class polymorphism Visual Basic .NET
Public Class button
Inherits window
Private _warna As String
Public Property Warna() As String
Get
Return _warna
End Get
Set(ByVal value As String)
_warna = value
End Set
End Property
Public Sub New(ByVal kiri As Integer, ByVal atas As Integer,
ByVal warna As String)
MyBase.New(kiri, atas)
Me.Warna = warna
End Sub
Public Overrides Function GambarWindow() As String
Return String.Format("Menggambar Button pada posisi ({0},
{1}) dan warnanya {2}", kiri, atas, Warna)
End Function
End Class
Program 3 Derived class polymorphism Visual Basic .NET
Pada coding di atas dapat dilihat bahwa method GambarWindow() pada class window di-override oleh kedua class turunannya, yaitu listBox dan button. Dengan demikian, kita dapat menerapkan polymorphism dengan cara sebagai berikut:
Public Class Form1
Private Sub BtnPolymorphism_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
Dim win As New window(12, 12)
Dim lb As New listBox(24, 24, "Content ListBox")
Dim tombol As New button(88, 88, "Merah")
'polymorphism MyListBox dan MyButton dianggap sebagai
MyControl
Dim winarray(2) As window
winarray(0) = win
winarray(1) = lb
winarray(2) = tombol
For Each ctr In winarray
MessageBox.Show(ctr.GambarWindow())
Next
End Sub
End Class
Program 4 Implementasi polymorphism Visual Basic .NET
Jika Anda perhatikan, pada coding di atas dapat dilihat bahwa winarray merupakan variabel bertipe array dari window. Oleh karena, seharusnya yang dapat dimasukkan ke dalam array tersebut adalah object dari class window, namun dalam kasus di atas lb dan tombol juga dapat dimasukkan ke dalam winarray padahal dua object tersebut bukan dari class window. Hal tersebut dapat terjadi karena konsep polymorphism. Class listBox dan button adalah turunan dari class window maka dapat ditarik sebuah kesimpulan umum bahwa dua class tersebut juga merupakan window.
Selanjutnya dengan menggunakan overriding method, method gambarWindow() yang ada di base class dapat di-override di class turunannya sehingga dapat mempunyai implementasi yang berbeda dengan base class.
Langganan:
Posting Komentar (Atom)
Tidak ada komentar:
Posting Komentar