Jalan Jalan Programmer
Jalan Jalan Programmer
Penggila teknologi OOP, khususnya pada Visual Basic .Net Semata Wayang Software
Jalan
BERDIKARI
Berdiri Dengan Kaki Sendiri
Sebelum menggunakan panduan Visual Basic .Net ini, ada beberapa hal yang harus
anda ketahui, dimulai dari berikut ini:
Panduan ini ditulis dengan sepenuh hati.
Panduan ini bersifat gratis. Dengan pengertian panduan ini tidaklah dijual. Jadi,
kalau anda mendapatkan panduan ini dengan membayar ataupun membeli,
maka bisa dipastikan anda telah dibodoh-bodohi sebodoh-bodohnya.
Saya paling takut bila di kemudian hari mengalami karma, khususnya karma
yang berasal dari menjual jasa, khususnya lagi pada panduan yang telah saya
tulis ini. Itu sebabnya, sekali lagi, panduan ini tidak dijual atau tepatnya gratis.
Saya pun tetap merasa ketakutan bila di kemudian hari ada yang menuntut saya
dengan dalih waktu yang dimilikinya (maksudnya para pembaca – red) habis sia-
sia ketika membaca panduan ini. Untuk menghadapi hal tersebut, maka dalih
saya pun adalah sebagai berikut:
Pastikan anda telah memiliki kemampuan dan pengetahuan yang layak
didalam dunia pemrograman Visual Basic .Net.
Pastikan anda sudah memiliki dokumentasi pada saat membaca panduan ini.
Dokumentasi yang dimaksud adalah MSDN alias Microsoft Developer
Network. Mengingat panduan yang saya tulis selalu berkiblatkan dari MSDN.
Saya selalu bermain di area penulisan kode. Dan juga selalu memanfaatkan
semua elemen atau komponen yang ada pada .Net Framework. Jadi kalau
pengetahuan anda hanya sebatas Windows Form dan Database Entity
Relational saja. Maka bisa dipastikan apa yang ada pada panduan ini akan
bertolak belakang dengan kepribadian dan pola pikir yang telah anda
bangun dan gunakan selama ini.
Panduan ini hanya menceritakan pengalaman pribadi saya selaku programmer
Visual Basic .Net. Sehingga apa yang telah saya perlihatkan kepada anda bisa
anda anggap atau nilai dengan benar maupun salah, atau sesuai maupun tidak
sesuai dengan penilaian anda.
Pendahuluan
Nostalgia
Lama sudah saya menjadi programmer Visual Basic .Net. Semua itu dihitung sejak
Visual Basic .Net 2003 hingga Visual Basic .Net 2010. Dan ketika Visual Basic .Net
sudah mencapai versi 2019, saya pun tetap bertahan di Visual Basic .Net 2010. Kenapa
demikian? Sederhana saja, alasannya seperti berikut ini:
Saya bukan tipikal orang yang tergesa-gesa.
Semua .Net Framework selalu dibangun berdasarkan operating system sasaran.
Dan berhubung operating system yang saya gunakan masihlah windows 7. Maka
saya tetap bertahan menggunakan Visual Basic .Net 2010.
Harus anda pahami, semua .Net Framework yang dibuat Microsoft pasti akan
selalu memiliki kemajuan. Dan ada kalanya ada teknik atau teknologi yang tidak
dimiliki oleh .Net Framework versi terdahulu. Atas dasar inilah saya akan selalu
pindah ke .Net Framework versi selanjutnya. Ambil contoh, generik diperkenalkan
pada .Net Framework 2.0. Dikarenakan pada .Net Framework versi 1.0, 1.1, 1.2,
dan 1.3 belum ada teknik teknologi generik. Maka saya pun hijrah dari Visual Basic
.Net 2003 menuju Visual Basic .Net 2005. Jadi disini terlihat jelas, bila ada teknik
teknologi yang tidak dimiliki oleh versi terdahulu (atau versi yang saat ini sedang
digunakan – red), maka pada saat itulah saya akan hijrah ke .Net Framework versi
selanjutnya.
Anda harus paham, adanya .Net Framework versi baru biasanya terjadi
dikarenakan hal-hal sebagai berikut:
Terjadi kemajuan. Dimana anda akan menemukan teknik teknologi yang baru.
Segala bug yang terjadi pada .Net Framework versi terdahulu telah diperbaiki.
Terjadi pembinasaan (biasa disebut sebagai obsolete – red). Dalam artian,
teknik teknologi yang terdahulu sudah tidak bisa digunakan lagi.
Pada Visual Basic .Net 2010, fondasi yang dimilikinya sudah sangat kokoh dan
tangguh. Mengingat semua teknologi para pendahulunya sudah dibakukan. Ambil
contoh sebagai berikut:
Teknik teknologi generik. Teknik teknologi ini diperkenalkan pada era .Net
Framework 2.0 atau tepatnya Visual Basic .Net 2005 atau Visual Basic 8.
Teknik teknologi linq (Language Integrated Query – red). Teknik teknologi ini
diperkenalkan pada era .Net Framework 3.5 atau tepatnya Visual Basic .Net 2008
atau Visual Basic 9. Tidak sampai disitu saja. Anda pun akan mendapatkan teknik
teknologi extension. Dimana anda bisa membuat sebuah penyisipan yang
ditujukan pada objek yang anda kehendaki.
Sedangkan pada Visual Basic .Net 2010 sendiri, yang mana fondasi .Net Framework
yang dimilikinya adalah 4.0. Maka anda akan mendapati pembaruan pada Lambda.
Sesungguhnya lambda sendiri sudah ada sejak .Net Framework 3.5. Sayangnya lambda
kala itu belumlah tangguh. Pada .Net Framework 4.0, lambda bisa digunakan sebagai
blok prosedur pengganti AddressOf atau Delegate. Lucunya, dahulu saya paling sering
menghindari keberadaan AddressOf ataupun Delegate. Tapi ketika lambda bisa
digunakan untuk menghadapi AddressOf maupun Delegate. Saya malah jadi senang
berurusan dengan AddressOf maupun Delegate. Pada akhirnya, Visual Basic .Net2010
cukup tangguh dan mumpuni untuk membangun sebuah aplikasi. Entah itu untuk
sasaran wilayah desktop-base maupun web-base. Jadi, jangan pernah merasa minder
ketika banyak programmer Visual Basic .Net sudah menggunakan versi terkini, dalam
artian diatas versi 2010. Belum tentu para programmer tersebut menggunakan
sekaligus memanfaatkan semua komponen yang ada pada .Net Framework.
Tingkatan Class
Pada dunia pemrograman yang berfondasikan OOP, tepatnya pada .Net Framework,
yang namanya class memiliki tiga tingkatan. Sederhana seperti berikut ini:
Class tingkat pertama:
Ini adalah class terendah dan juga tidak memiliki bentuk fisik sama sekali. Dalam
artian belum memiliki tingkat kesulitan sama sekali. Anda bisa berpatokan pada
class yang telah saya buat, yaitu DataDiri, DataSiswa, DataMahasiswa dan
DataKaryawan. Sekedar mengingatkan, class seperti ini tidak bisa dibawa ke area
Design View.
Class tingkat kedua:
Ini adalah class menengah. Ada kemungkinan anda sering menggunakannya,
semisal Timer. Sekalipun begitu, class menengah bisa dibawa ke area Design View
sekalipun belum memiliki bentuk fisik sama sekali.
Class tingkat ketiga:
Ini adalah class tingkat tinggi. Dikatakan demikian dikarenakan anda akan
menemukan banyak kerumitan yang dikandung oleh class ini. Ditambah lagi class
ini memiliki bentuk fisik, sehingga bisa dibawa ke area Design View. Class seperti
ini sudah sering anda gunakan, mulai dari Form, Control, dan UserControl.
Nah, sampai disini saya ingin memberitahukan kepada anda, mengingat banyak sekali
programmer Visual Basic .Net (saya tidak tahu dengan programmer diluar Visual Basic
.Net – red) yang tidak menyadarinya. Yaitu, sesungguhnya class tingkat satu dan class
tingkat dua bisa anda temukan pada tipe project apapun. Entah itu pada area
Windows Form, Windows Presentation Form, ASP .Net, Silverlight, dan tetek-bengek
lainnya. Tapi, kalau sudah menjelaskan mengenai class tingkat ketiga, maka class
tersebut hanya akan anda temukan pada area project yang sedang digunakan, dan
memang hanya ditujukan pada satu wilayah atau area project. Mengingat class tingkat
ketiga dibuat dengan karakteristik yang berbeda dan unik.
Kelemahan Class Pada Visual Basic .Net
Sekalipun Visual Basic .Net dibangun diatas fondasi .Net Framework. Tidak serta
merta kedudukan Visual Basic .Net bisa sederajat dengan saudara atau sepupunya
yang lain. Dan memang sejak awal saya menjadi programmer Visual Basic, terhitung
dari versi 4, saya sudah menyadarinya kalau Visual Basic sampai kapan pun akan
berada pada posisi sebagai anak tiri, bwahahaha, hiks.
Disini, satu hal yang saya benci dari class yang dimiliki oleh Visual Basic .Net adalah
tidak bisa melakukan pewarisan ganda, atau terkadang saya menyebutnya sebagai
perkawinan. Sederhananya, kalau anda pernah memiliki keinginan membuat control
visual yang menjadi turunan dari Textbox dan Button. Maka hal seperti itu hanya bisa
terjadi pada bahasa pemrograman diluar Visual Basic .Net. Mengingat pada Visual
Basic .Net, yang namanya pewarisan hanya bersifat searah. Harap maklum lah,
Microsoft sampai hari ini sepertinya masih menjadikan Visual Basic .Net sebagai
bahasa pemrograman berorientasi tujuan alias goal oriented.
Sekali lagi, dikarenakan interface hanyalah sebuah kerangka dasar atau bagan atau
blue print, maka anda tidak akan menemukan alur logika atau biasa disebut sebagai
blok prosedur. Setelah itu, saya akan membuat class Biodata guna menerapkan
interface BiodataI yang telah saya buat, saya beri nama BiodataC, yang mana
penulisan kodenya sebagai berikut:
Public Class BiodataC
Implements BiodataI
End Get
Set(ByVal value As String)
End Set
End Property
End Get
Set(ByVal value As Date)
End Set
End Property
End Get
Set(ByVal value As String)
End Set
End Property
End Class
Nah, pada penulisan kode diatas, itulah yang akan selalu terjadi ketika anda
menuliskan implements sebuah interface, dalam hal ini adalah BiodataI. Sekedar
mengingatkan saja, ketika anda menuliskan implements sebuah interface, dan
kemudian meng-enter, maka pada saat itu pula compiler akan menyediakan blok
prosedur sesuai dengan interface yang dituju atau digunakan. Pada penulisan kode
diatas, saya sengaja membiarkan blok prosedur yang ada kosong melompong.
Mengingat disini saya hanya berniat menjelaskan kegunaan interface. Dari sini, saya
akan membuat Biodata versi structure, saya beri nama BiodataS, yang mana penulisan
kodenya seperti berikut:
Public Structure BiodataS
Implements BiodataI
End Get
Set(ByVal value As String)
End Set
End Property
End Get
Set(ByVal value As Date)
End Set
End Property
End Get
Set(ByVal value As String)
End Set
End Property
End Structure
Setelah itu saya membuat interface dengan nama SifatIbu, yang mana penulisan
kodenya sebagai berikut:
Public Interface SifatIbu
Property Cerewet As Integer
Property SukaMembandingkan As Integer
End Interface
Berdasarkan penulisan kode diatas, maka anda akan menemukan, baik SifatBapak dan
SifatIbu adalah dua interface yang berbeda atau lebih tepatnya berdiri sendiri.
Kemudian dari sini, saya membuat interface SifatAnak, yang mana penulisan kodenya
sebagai berikut:
Public Interface SifatAnak
Inherits SifatBapak, SifatIbu
Property Pemalas As Integer
End Interface
Nah, seperti yang anda lihat pada penulisan kode diatas, yaitu pada interface
SifatAnak. Berdasarkan penulisan kode tersebut, maka anda akan menemukan bahwa
interface SifatAnak terbentuk dari interface SifatBapak dan SifatIbu. Dan hal ini pula
yang menyebabkan bahwa interface Sifat-
Anak sedikit lebih rumit atau kompleks
daripada interface SifatBapak dan SifatIbu.
Sekali lagi, kalau anda meminta bantuan
class diagram, maka class diagram yang akan
anda dapati sama seperti yang ada pada
gambar 3. Dan seperti yang anda lihat pada
gambar 3, disitulah kenikmatan yang saya
rasakan ketika saya melakukan pewarisan
ganda atau pernikahan. Kalau anda belum
pernah menyelami dunia OOP pada .Net
Framework, maka saya pastikan anda akan
kesulitan merasakan kenikmatan yang bisa Gambar 3
anda dapati pada dunia OOP yang ada pada
.Net Framework. Sehingga saya pun berharap anda berkenan menghabiskan waktu
anda di dunia penulisan kode ketika anda mendesain program aplikasi pada Visual
Basic .Net ataupun bahasa pemrograman yang lainnya yang berfondasikan OOP.
Bagi para programmer MFC alias Microsoft Foundation C alias Visal C++, generik akan
selalu diartikan sebagai template. Dan buat saya, saya akan selalu mengartikan
generik sebagai multi tafsir. Saya sebut demikian dikarenakan anda bebas
mengartikannya, semau anda malahan. Sebagai bukti, saya akan menerapkan
interface fungsi seperti berikut:
Public Class UjiFungsi
Implements Fungsi(Of String, Integer), Fungsi(Of Integer, String), _
Fungsi(Of String, Byte), Fungsi(Of Byte, String), _
Fungsi(Of Integer, Object), Fungsi(Of String, Object)
End Function
Public Function Fungsi1(ByVal Ke As String) As Integer _
Implements Fungsi(Of String, Integer).Fungsi
End Function
Public Function Fungsi2(ByVal Ke As String) As Byte _
Implements Fungsi(Of String, Byte).Fungsi
End Function
Public Function Fungsi3(ByVal Ke As Byte) As String _
Implements Fungsi(Of Byte, String).Fungsi
End Function
Public Function Fungsi4(ByVal Ke As Integer) As Object _
Implements Fungsi(Of Integer, Object).Fungsi
End Function
Public Function Fungsi5(ByVal Ke As String) As Object _
Implements Fungsi(Of String, Object).Fungsi
End Function
End Class
Kesimpulan
Ketika saya masih tergolong baru didalam mempelajari fondasi .Net Framework. Saya
selalu berpatokan, bahwa yang namanya OOP sudah pasti akan selalu menitik
beratkan pewarisan atau inherits. Tapi di kemudian hari, saya tarik kembali kata-kata.
Dikarenakan selain teknik teknologi pewarisan atau inherits, ternyata masih ada satu
teknik teknologi lagi, yaitu penerapan atau implements. Kesimpulan ini saya ambil
ketika saya ingin membangun sesuatu yang memiliki kesamaan dan bisa diterapkan
pada dua objek yang berbeda jenis, yaitu class dan structure.
Jadi, apapun istilah yang akan anda temukan ketika anda memasuki dunia
pemrograman, entah itu pewarisan atau inherits, penerapan atau implements,
addressing, binding, contract, dan segala macam tetek-bengek lainnya, sebenarnya itu
hanya menceritakan sebuah jalan, itu saja.
Tentang Penulis
Tidak ada yang istimewa, hanya seorang programmer kacangan yang sedang belajar
sekaligus menjalani kehidupan sebagai penulis. Sekalipun begitu, apapun yang saya
tulis akan selalu menitikberatkan pada OOP dan .Net Framework. Hal ini terjadi
dikarenakan filosofi dunia pemrograman pada hari ini adalah change is forever alias
selamanya berubah, bahkan ada lagi filosofi yang lain berbunyi change is eternal alias
perubahan itu abadi.
Akhir kata, semoga apa yang saya tulis ini bisa membantu anda didalam mendesain
alur logika. Bila ada pertanyaan, sebaiknya anda langsung mencari dokumentasinya ke
MSDN. Mengingat MSDN gudangnya ilmu.
Wahyu Pratama
Mayang, Gatak, Surakarta, Solo