OOP Part-2 (VB)

Created at : Apr/28/2007  
1577 Views   1 Comments

Pada artikel sebelumnya saya telah membahas tentang pilar-pilar OOP. Kali ini saya akan menjelaskan OOP dari sisi struktur code nya. Let us begin :

Struktur sebuah class di VB diawali oleh deklarasi class tersebut disertai dengan nama classnya :

Public Class Employees

End Class

Class tersebut merupakan abstraction dari objek Pegawai. Seringkali kita mendengar class dan object, so what's the difference? Class merupakan template dari sebuah object, dan object merupakan representasi dari sebuah class. Class dibuat ketika proses design time, sedangkan object dibuat ketika runtime.

Dalam sebuah class kita dapat menambahkan member-member yang mencerminkan dari atribut-atribut yang berhubungan dengan object yang kita buat. Member sebuah class dapat berupa Property, Field, Prosedur, Event, dsb. Sekarang saya akan tambahkan property GetID dan GetName pada class Employees diatas :

Private mIntID As Integer
Private mStrName As String

Public Property GetID() As Integer
Get
Return mIntID
End Get
Set(ByVal value As Integer)
mIntID = value
End Set
End Property

Public Property GetName() As String
Get
Return mStrName
End Get
Set(ByVal value As String)
mStrName = value
End Set
End Property

Penggunaan private field diatas untuk mengenkapsulasi business role yang kita gunakan di class tsb. Misalkan kita punya aturan sendiri untuk generate ID number pegawai, sehingga user hanya berinteraksi lewat property yang kita buat. Prosedur Get akan dieksekusi kalau kita akan baca value dari properti tsb, sedangkan prosedur Set akan dieksekusi kalau properti tsb menerima value yang diberikan oleh user. Property dapat berupa ReadOnly properti atau WriteOnly properti. ReadOnly property hanya bisa digunakan untuk membaca value yang terdapat didalamnya, WriteOnly sebaliknya, hanya bisa diberikan value tanpa bisa membacanya.

Sekarang saya akan membahas mengenai inheritance. Yup, fitur ini yang membuat VB.NET menjadi bahasa yang true OOP, karena di VB6 kita tidak bisa melakukannya. Dengan inheritance maka sebuah class bisa dijadikan sebagai base class yang berguna sebagai template general untuk class-class yang dibentuk berdasarkan class tersebut. Jika sebuah class inherits dari suatu class maka proses tsb biasanya diistilahkan dengan subclassing. Child class yang terbentuk akan mewarisi semua member yang terdapat di base class nya. Dan sudah pasti member tsb merupakan member yang diberi akses modifier Public, Protected, atau Friend. Di VB.NET kita hanya bisa melakukan single inheritance, artinya sebuah class hanya bisa inherits dari satu class saja, tidak bisa lebih dari itu. Secara sintaks seperti ini (misal saya buat class HRDEmployees yang inherits dari class Employees) :

Public Class HRDEmployees
Inherits Employees

End Class

Class HRDEmployees akan mewarisi member GetID dan GetName, sehingga kita tidak perlu lagi untuk menambahkan properti GetID dan GetName. Salah satu member yang perlu kita ketahui yaitu Constructor. Constructor di VB.NET tidak lain hanyalah merupakan sebuah Sub dengan nama New. Di kedua class diatas tidak terlihat adanya constructor tsb. Sebenarnya constructor tsb secara default ada dan akan ditambahkan secara otomatis kalau kita tidak secara eksplisit menuliskannya. Constructor tsb biasa disebut Default constructor (constructor tidak berparameter). Ok...sekarang saya akan tambahkan constructor ke class HRDEmployees :

Public Class HRDEmployees
Inherits Employees

Public Sub New()
End Sub

Public Sub New(ByVal ID As Integer)
MyBase.GetID = ID
End Sub

Public Sub New(ByVal Name As String)
MyBase.GetName = Name
End Sub

Public Sub New(ByVal ID As Integer, ByVal Name As String)
MyBase.GetID = ID
MyBase.GetName = Name
End Sub

Di class tsb dibuatkan tiga buah constructor. Kita dapat membuat lebih dari constructor dalam sebuah class, fitur ini dinamakan dengan Overloading. Dengan overloading maka kita dapat membuat lebih dari satu member dengan nama yang sama tetapi dengan signature yang berbeda. Berbeda disini bisa dalam hal jumlah parameter, dan perbedaan tipe data parameternya. Jumlah paramater bisa saja sama, namun disini kita harus membedakannya dengan tipe data yang digunakan. Dengan fitur overloading pada constructor kita diberikan beberapa pilihan untuk create instance class yang akan digunakan. Anda bisa mencobanya dengan cara seperti ini :

Sub Main()
Dim HRDEmp1 As New HRDEmployees()
HRDEmp1.GetID = 1
HRDEmp1.GetName = "Roel"

Dim HRDEmp2 As New HRDEmployees(2)
HRDEmp2.GetName = "Yulian"

Dim HRDEmp3 As New HRDEmployees(3, "Rully Yulian")

Console.WriteLine(HRDEmp1.GetID & "," & HRDEmp1.GetName)
Console.WriteLine(HRDEmp2.GetID & "," & HRDEmp2.GetName)
Console.WriteLine(HRDEmp3.GetID & "," & HRDEmp3.GetName)

Console.ReadLine()
End Sub

Ok... sementara sampai disini dulu pembahasannya untuk basic pembuatan class, constructor, inheritance, member, saya akan lanjutkan nanti di next article...c u !!


[Comments]
Bisnis Internet Jan/05/2010 11:26:48 :
Terimakasih sharingnya semoga bermanfaat bagi semua pembaca. Astaga.com Lifestyle on the Net

[Write your comment]
Name (required)
URL (optional)
Example : http://www.yulianmf.com  
Comment

wepf
Input code above below (Case Sensitif) :
About Me 
Rully Yulian MF
My Name is Rully Yulian Muhammad Firmansyah. I am an IT Trainer, IT Consultant and Application Developer spesializing in Microsoft .NET technology and SQL Server database. I live in Bandung, Indonesia. My hobby is to play Guitar. [Read More...]
Top Download 
Bagaimana caranya menginstal database ketika deploying sebuah aplikasi? : Downloaded 2235 times  
Change Group,Sort Order, Filtering By Date in Crystal Reports : Downloaded 2192 times  
Simple Voice Engine Application With Sound Player Class... : Downloaded 1523 times  
DataGridView Grouping : Downloaded 1243 times  
WinForms DataGrid Paging With SqlDataAdapter : Downloaded 1232 times  
Article Category 
Links 
Award 
Certifications 
MOS 2007
MCAS
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench
Native Enterprise - IT Training 
Native Enterprise Facebook Group 
My Facebook 
My LinkedIn 
Syndication (RSS 2.0) 
Powered By 
Native Enterprise News