OOP vs Procedural Programming

Object Oriented Programming pada .NET
www.komputerinside.blogspot.com

Menuliskan kode program tidak hanya sekadar mengetikkan perintah perintah yang menginstruksikan
aplikasi untuk mengerjakan sesuatu, tetapi bisa jadi juga merupakan seni membangun struktur kode
program dengan kaidah tertentu. Konsep yang semakin banyak digunakan adalah Object Oriented
Programming atau Pemrograman Berorientasi Object.
Object Oriented Programming OOP bukanlah hal yang baru dikenal kemarin sore, karena pada
tahun 1970 an telah dikenal bahasa pemrograman Smalltalk yang berorientasi object. Bahasa
pemrograman C semakin mengukuhkan metodologi OOP pada tahun 1980 an. Penggunaannya
semakin meluas dengan dikenalnya bahasa pemrograman Java yang mengimplementasikan virtual
machine yang mengizinkan aplikasi berjalan pada platform yang berbeda tanpa dilakukan perubahan
kode program. Bahkan kemunculan platform .NET dan bahasa pemrograman yang disertakan dalam
Visual Studio Visual Basic, C oleh Microsoft seakan mengharuskan Anda untuk memahami paradigma
OOP agar dapat menggunakan kemampuan .NET secara optimal. Konsep OOP juga telah didukung dan
digunakan pada bahasa pemrograman scripting, seperti PHP, Perl, Phyton, dan Ruby
OOP vs Procedural Programming
Selain menggunakan paradigma OOP, programer dapat menuliskan struktur kode program
yang baik dengan menggunakan Procedural Programming, di mana programer membuat kode program
dengan pendekatan procedural dan bekerja dengan function procedure di dalam aplikasinya. Tetapi,
tidak ada jawaban yang benarbenar tepat jika Anda diberi pertanyaan: apakah sebaiknya menggunakan

OOP atau Procedural Programming? Karena jawabannya sangat relatif, terutama tergantung pada
aplikasi yang ingin Anda buat. Jika Anda mempertimbangkan pemeliharaan dan pengembangan aplikasi
yang efi sien di masa yang akan datang, mungkin Anda dapat memilih pendekatan OOP.
Tetapi, jika aplikasi Anda merupakan program sederhana yang dapat dibuat dengan mudah dan
cepat dengan function procedure, gunakanlah pendekatan Procedural Programming. Semua itu juga
tergantung pada Anda sebagai programer, untuk memilih pendekatan yang cocok dan lebih baik bagi
Anda dalam mengerjakan sebuah aplikasi.
Pengenalan OOP Prinsip utama OOP
adalah memperlakukan masing masing bagian dari sebuah aplikasi sebagai object. Berbeda
dengan Procedural Programming, di mana sebuah aplikasi terdiri kumpulan function dan instruksi.
Masing masing object pada OOP dapat menerima pesan, memproses data, dan mengirim pesan pada
object lainnya, serta dapat dilihat sebagai sebuah item yang berdiri sendiri dengan tanggung jawab dan
aturan tertentu. Pada sebuah object, Anda tidak perlu mengetahui bagaimana object itu bekerja. Anda
hanya perlu mengetahui apa yang dilakukan object tersebut. Terdapat banyak contoh untuk
menjelaskan konsep OOP, hal yang umum diberikan adalah contoh pada dunia nyata. Misalnya sebuah

mobil, seekor anjing, ataupun makhluk dan benda lain yang dapat mewakili sebuah object. Tetapi bagi
seorang programer, mungkin akan lebih cepat memahami jika diberikan contoh yang langsung diambil
dari aplikasi. Bayangkan sebuah aplikasi katalog buku, dimana Anda memiliki kategori buku, kategori
ini merupakan suatu object.

Kategori tersebut memiliki nama, judul, nomor ID yang unik ataupun deskripsi yang lain.
Deskripsi dari object ini disebut dengan property. Pada object kategori, Anda dapat menambahkan,
menghapus, atau menampilkan kategori. Aksi aksi pada object ini simpan, hapus, tampilkan disebut
dengan method. Anda dapat menggunakan method dan property yang tersedia pada object tersebut
pada aplikasi Anda.
Class Pada OOP,
Anda akan sering bekerja de ngan class. Class dapat dianalogikan sebagai sebuah template,
sebuah struktur yang meliputi method dan property. Pada sebuah class, property yang
mendeskripsikan object merupakan variabel dan method yang merupakan aksi dari object adalah
function. Property dan method yang didefi nisikan pada class disebut dengan members.
Inheritance, Encapsulation, dan Polymorphism
Anda dapat menambahkan fungsi dari sebuah class dengan konsep inheritance. Pada contoh
katalog, sebuah kategori dapat memiliki satu atau lebih produk, masing masing produk memiliki
kumpulan method dan property nya yang diturunkan inherit dari property dan method dari kategori.
Jika diambil contoh dari dunia nyata, Anda mungkin akan dihadapkan dengan silsilah anjing untuk
menjelaskan konsep inheritance, yang bagaimanapun juga, memang merupakan contoh yang sangat
tepat. Pada OOP juga dikenal Encapsulation, di mana object terbungkus terenkapsulasi sebagai
sebuah black box kotak hitam di mana Anda tidak perlu mengetahui bagaimana proses bekerjanya
sebuah object. Object dapat berinteraksi satu sama lain dengan interface berupa members kumpulan
property dan method yang dapat diakses. Members dapat dideklarasikan sebagai public, protected,

dan private. Konsep Polymorphism digunakan untuk menerangkan dua atau lebih class yang memiliki
reaksi berbeda pada pesan yang sama.
OOP pada Visual Basic 6.0 Pada Visual Basic 6.0 dan Visual Basic versi sebelumnya
banyak diperdebatkan apakah bahasa pemrograman Visual Basic termasuk sebagai bahasa
pemrograman berorientasi object ataukah tidak. Pada satu sisi, Visual Basic 6.0 mendukung object dan
interface, dan juga mengimplementasikan class yang didefi nisikan pada class module dan disimpan
pada fi le dengan ekstensi .cls. Bahkan implementasi drag and drop control yang pasti dikenal oleh
setiap programer Visual Basic merupakan contoh object yang dapat di reuse. Pada saat Anda
meletakkan sebuah control, misalnya sebuah command button pada form Visual Basic, Anda telah
menciptakan object baru yang memiliki members berupa property, method, dan events. Visual Basic
6.0 juga mengenal keyword private, friend, public, dan static yang digunakan untuk mengatur level
akses dari elemen yang dideklarasikan. Tetapi, pada sisi lain Visual Basic 6.0 dianggap tidak
mengimplementasikan inheritance dan hanya memiliki fi tur object oriented yang terbatas. Sebuah

class pada Visual Basic 6.0 tidak mendukung untuk menurunkan property dan function nya pada class
yang lain. Bagaimana dengan polymorphism? Visual Basic 6.0 mendukung polymorphism melalui
interface pada ActiveX. Pada Component Object Model COM yang membentuk infrastruktur spesifi
kasi ActiveX, terdapat multiple interface yang memungkinkan komponen software dikembangkan
tanpa mengubah kode program yang ada. Secara umum, OOP pada Visual Basic 6.0 lebih
diimplementasikan pada user interface dan kurang memberikan dukungan bagi programer untuk

mengimplementasikan OOP pada kode program. Paradigma ini yang kemudian diubah pada generasi
Visual Basic .NET.
OOP pada Visual Basic .NET
Perdebatan apakah Visual Basic merupakan bahasa pemrograman berorientasi object ataukah
tidak, berakhir pada saat dirilisnya Visual Studio .NET dan generasi seterusnya. Pada .NET, Visual Basic
murni merupakan bahasa pemrograman berorientasi object. Kegunaan OOP yang utama adalah
memaksimalkan penggunaan kembali kode program code reuse . Saat Anda melakukan drag and drop,
prosesnya dikerjakan oleh control designer sehingga Anda tidak perlu mengetahui bagaimana object
itu bekerja. Bahkan Anda bebas menggunakan sebanyak mungkin control dan memodifi kasi warna,
bentuk, judul, bahkan event handling dari object.
Dasar dari tipe sistem .NET adalah inheritance, yang tidak Anda temui dalam Visual Basic
sebelumnya. Contoh implementasi inheritance pada .NET adalah namespace, .NET mengenal enam tipe
kategori yang dapat didefi nisikan pada namespace: 1. Classes. Merupakan tipe referensi yang didefi
nisikan dengan struktur Class .. End Class. 2. Arrays. Merupakan tipe referensi yang menyimpan object
dari tipe yang lain. Class Array didefinisikan pada namespace System pada .NET Framework Class
Library. 3. Structures. Didefi nisikan dengan struktur Structure ... End Structure. 4. Interfaces. Didefi
nisikan dengan struktur Interface .. End Interface. 5. Delegates. Merupakan tipe referensi yang
mengenkapsulasi method dan didefinisikan dengan statement Delegate. 6. Enumerations. Merupakan
kumpulan nilai yang berkaitan, didefi nisikan dengan struktur Enum .. End Enum.
Masing masing dari enam kategori tersebut dapat mendefi nisikan satu atau lebih members.

Tipe tipe members pada .NET adalah: 1. Fields. Merupakan konstanta atau variabel yang mengizinkan
akses tipe data. Fields dapat didefi nisikan oleh class, structure, dan enumeration. Fields digunakan
sebagai data yang bersifat read only, atau sering didefi nisikan sebagai konstanta. Fields juga dapat
berupa variabel read only yang nilainya didefinisikan kali pertama pada class constructor dan tidak
dapat diubah lagi. 2. Properties. Property dapat didefi nisikan untuk class, structure, dan interface.
Umumnya property dapat dibaca readable dan ditulis writable , walaupun dapat juga diperlakukan
read only atau write only. 3. Methods. Merupakan function atau subrutin yang tersedia pada sebuah
class, structure, interface, atau delegate. Pada sebuah method terdapat parameter atau argumen yang
dapat dikirimkan by value atau by reference. Bagi programer Visual Basic 6.0 sudah tentu tidak asing
lagi dengan parameter by value maupun by reference yang biasa digunakan dalam pembuatan function
procedure. By value berarti perubahan nilai pada variabel parameter yang diki rimkan hanya akan
berlaku di dalam function, sementara by reference berarti perubahan nilai pada variabel di dalam
function akan tetap berlaku pada saat function tersebut selesai dieksekusi dan kembali pada

pemanggil. Dengan menggunakan keyword ByVal atau ByRef, Anda dapat menentukan bagaimana
parameter dikirimkan. 4. Events. Pada Visual Basic versi sebelumnya, Anda tentu telah mengenal event
yang menimbulkan istilah event driven programming. Event merupakan sebuah function yang
dipanggil untuk merespon kejadian event tertentu, seperti klik mouse, penekanan tombol keyboard,
perubahan nilai fi eld pada database, dan lain lain.
Umumnya event mengirimkan dua parameter, yaitu object yang mengindikasikan sender

pengirim event, dan object yang menyediakan informasi pada event tersebut. Pada sebuah class, Anda
dapat melakukan modifi kasi pada method dengan cara overriding maupun overloading. Overriding
berarti Anda mengubah implementasi dari sebuah method, sementara overloading berarti
menambahkan method baru dengan nama yang sama, tetapi dengan pengenal yang berbeda.
Overloading mengizinkan Anda memiliki dua atau lebih method dengan nama yang sama. Dua method
tersebut akan muncul pada fasilitas IntelliSense sehingga pengguna dapat memilih method yang
diinginkan. Bagaimanapun, salah memilih method dapat menyebabkan runtime error, Anda dapat
menghilangkan method yang tidak diinginkan untuk tampil dengan menggunakan keyword Shadows.
Generic Class Inovasi baru generasi .NET
adalah fi tur yang dikenal dengan generics yang menyediakan sejumlah generic class. Untuk
memahami kegunaan dari generic class, bayangkan Anda ingin membuat berbagai versi sebuah class di
mana Anda ingin class tersebut bekerja pada lebih dari satu tipe data, misalnya class yang dapat
bekerja pada tipe data integer, string, dan lain lain. Dengan generic class, Anda tidak perlu
menentukan tipe data yang diinginkan hingga Anda menciptakan object nya di dalam program Anda.
Anda dapat menemukan generic class pada namespace System. Collections.Generic pada .NET
Framework Class Library. Selain menggunakan generic class yang tersedia pada .NET Framework, Anda
juga dapat menuliskan sendiri generic class Anda. Dapat disimpulkan keuntungan dari generic class
adalah: 1. Keamanan tipe data. Generic class memeriksa kevalidan tipe data pada saat compile time
dan bukan pada saat run time. Hal ini mengurangi kemungkinan konfl ik tipe data pada saat run time.
2. Kinerja yang lebih baik. Karena tipe data yang digunakan pada generic class dikenali pada saat

compiletime, maka tidak diperlukan proses type casting pada saat run time yang tentunya
mempercepat waktu proses. 3. Penggunaan ulang reuse . Anda hanya perlu menuliskan class satu kali
dan dapat menggunakannya dengan tipe data yang bervariasi.
Partial Class Pada .NET versi 2.0
, dikembangkan partial class atau class yang terpisah, yang memungkinkan Anda untuk
memisahkan defi nisi class pada beberapa fi le. Pada saat compile time, compiler akan
mengelompokkan partial class tersebut dan memperlakukannya sebagai satu kesatuan. Keuntungan
dari partial class adalah mengelompokkan pada batas yang jelas antara business logic dan user
interface. Dengan partial class, kode program yang merupakan user interface tidak perlu ditampilkan
pada programer, yang pada umumnya tidak perlu mengaksesnya. Partial class juga mempermudah
proses debugging, di mana kode dipartisi ke dalam beberapa fi le yang berbeda.
Beberapa Fitur Baru

Beberapa fi tur baru adalah penambahan keyword baru, yaitu Shared dapat digunakan untuk
statement property, sub, dim, function, operator, dan event. Digunakan untuk melakukan sharing
members class, Anda dapat mengakses members yang di share dengan memanggil nama class.
Dukungan terhadap multithreading dan exception handling merupakan keunggulan penting pada .NET.
Teknik multithreading sering diperlukan dalam aplikasi yang memerlukan banyak proses yang harus
berjalan simultan. Dimana Anda dapat menciptakan, menghapus, menghentikan sementara, atau
mengatur prioritas sebuah thread.

Teknik exception handling diperlukan untuk menangani kesalahan program, pada .NET dikenal
structured exception handling dengan menggunakan perintah try...catch..fi nally. Di mana blok try
berisi baris kode, blok catch merupakan baris yang akan diproses jika terjadi exception, blok fi nally
bersifat optional dan digunakan jika Anda perlu membersihkan resource yang digunakan. Fitur lain,
yaitu My Namespace merupakan contoh implementasi OOP yang berguna bagi programer untuk
mengakses class dan function pada .NET Framework.
Penutup
Penguasaan OOP merupakan salah satu syarat bagi Anda yang ingin mendalami .NET dengan
baik, karena bahasa pemrograman .NET murni termasuk dalam kategori bahasa pemrograman
berorientasi object sebagaimana yang sebelumnya kita kenal pada bahasa pemrograman C . Kembali
pada perbandingan antara OOP dengan Procedural Programming, keduanya memiliki struktur yang
baik untuk membuat sebuah aplikasi, di mana OOP menekankan pada penggunaan object sementara
Procedural Programming menekankan pada penggunaan function procedure. Anda dapat melihat
persamaannya, yaitu diperlukan kemampuan untuk menuliskan kode program secara terstruktur dan
rapi, yang mana sangat penting untuk pembuatan aplikasi yang membutuhkan team work yang baik,
ataupun untuk pengembangan aplikasi di masa yang akan datang.