Pengertian Pemrograman Berorientasi Objek
Object Oriented Programming atau dapat juga disebut dengan pemrograman berorientasi pada objek merupakan metode pemrograman yang sedang ‘booming’ saat ini. Metode ini digunakan untuk mencari cara atau bagaimana membuat sebuah program yang lebih mudah dan meminimalisir kesalahan dalam proses compiling -nya. Dalam dnia nyata kita sering melihat berbagai macam objek yang memang dapat dilihat secara kasat mata dan dapat dirasakan karena mempunyai bentuk. Tetapi dalam sebuah proses program, objek terkadang merupakan sekumpulan perintah-perintah yang dijalankan oleh sebuah compiler tertentu sehingga dapat menampilkan hasil yang diinginkan oleh si pembuat program.
OOP (Object Oriented Programming) atau Pemprograman berorientasi objek adalah suatu cara baru dalam berfikir serta berlogika dalam menghadapi masalah-masalah yang akan dicoba diatasi dengan bantuan komputer. OOP, tidak seperti pendahulunya (Pemprograman Terstruktur), mencoba melihat permasalahan lewat pengamatan dunia nyata dimana setiap objek adalah entitas tunggal yang memiliki kombinasi struktur data dan fungsi tertentu. Ini kontras dengan pemprograman terstruktur dimana struktur data dan fungsi didefinisikan secara terpisah dan tidak berhubungan secara erat.

 Kelebihan dan Kekurangan OOP
OOP memiliki beberapa keuntungan dalam pemrograman, di antaranya:
OOP menyediakan struktur modular yang jelas untuk program sehingga OOP sangat bagus digunakan untuk mendefinisikan tipe data abstrak di mana detil implementasinya tersembunyi.
OOP akan mempermudah dalam memaintain dan memodifikasi kode yang sudah ada. Objek yang baru dapat dibuat tanpa mengubah kode yang sudah ada.
OOP menyediakan framework untuk library kode di mana komponen software yang tersedia dapat dengan mudah diadaptasi dan dimodifikasi oleh programmer. Hal ini sangat berguna untuk mengembangkan GUI (Graphical User Interfaces).
Sedangkan beberapa kelemahan OOP antara lain adalah sebagai berikut:
1. Tidak memperbolehkan implementasi yang kuat pada reuse
2. Properti software tidak terikat dalam satu unit fungsional, sehingga harus
crosscut di antara komponennya.
3. Crosscut tersebut mengakibatkan sulitnya pengembangan dan pemeliharaan.

OOP pada Pemrograman Visual
Pemrograman berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam teknik piranti lunak skala besar. Pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat. Sebenarnya konsep OOP pada C# dan di VB itu sama saja, hanya yang membedakannya terletak pada sintaknya
Pemrograman orientasi-objek menekankan konsep berikut:
• class — kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Sebagai contoh ‘class of dog’ adalah suatu unit yang terdiri atas definisi-definisi data dan fungsi-fungsi yang menunjuk pada berbagai macam perilaku/turunan dari anjing. Sebuah class adalah dasar dari modularitas dan struktur dalam pemrograman berorientasi object. Sebuah class secara tipikal sebaiknya dapat dikenali oleh seorang non-programmer sekalipun terkait dengan domain permasalahan yang ada, dan kode yang terdapat dalam sebuah class sebaiknya (relatif) bersifat mandiri dan independen (sebagaimana kode tersebut digunakan jika tidak menggunakan OOP). Dengan modularitas, struktur dari sebuah program akan terkait dengan aspek-aspek dalam masalah yang akan diselesaikan melalui program tersebut. Cara seperti ini akan menyederhanakan pemetaan dari masalah ke sebuah program ataupun sebaliknya.
Class merupakan konsep object-oriented yang meng-encapsulasi data dan prosedur secara abstrak yang diperoleh untuk mendeskripsikan content atau state dan behaviour terhadap beberapa entitas didunia nyata. Content atau state dapat artikan keadaan dari sebuah objek,sebagai contoh mobil memiliki state warna, model, bentuk dan lain-lain. Sedangkan behaviour merupakan kelakukan dari objek tersebut, misalnya mobil maju kedepan, belok kiri atau kanan,memberi tanda lampu (sen) dan lainnya. Objek dapat menyimpan state dalam beberapa variabel dan mengimplementasikan behaviour- nya menggunakan method. Berdasarkan penjelasan tersebut apabila diimplementasikan dalam pemrograman, objek dapat diartikan sebagai bagian dari sebuah aplikasi program (software) dimana didalamnya dihubungkannya variabel-variabel dan juga method-mthodnya yang keduanya saling keterkaitan satu dengan lainnya.
Contoh umum untuk konsep abstrak seperti ini adalah objek Event dalam pemrograman berbasis visual, yaitu objek untuk mewakili peristiwa klik atau tombol ditekan. Kemudian bagaimana dengan pengertian dari class itu sendiri. Class dapat diartikan seperti sebuah cetakan atau template. Apabila kita ingin membuat sebuah kue bolu, maka kita diharuskan mempunyai cetakan kue bolu. Dari cetakan kue bolu yang sudah ada, kita dapat mencetak berbagai macam jenis kue bolu. Berbagai macam jenis kue bolu ini yang dapat dikatakan sebagai objek, yaitu hasil dari class.
Hal ini dapat dilakukan karena semua objek kue bolu yang dibuat pada dasarnya memiliki karakteristik yang sama, sehingga dapat dibuatkan semacam samplenya. Tetapi objek-objek yang dibangun tetap akan memiliki bentuk fisik tertentu sendiri-sendiri, seperti variabel dalam sebuah program. Dengan penjelasan ini, kelas dapat kita definisikan kembali menjadi sebuah blueprint, atau prototipe, yang mendefinisikan variabel dan metode yang sama untuk semua objek sejenis.
Dalam sebuah class terdapat dua komponen penting, diantaranya yaitu :
a.Method yang menggambarkan behaviour atau perilaku dari sebuah objek
b.Properties menggambarkan karakteristik atau sifat dari sebuah objek
• Object – membungkus data dan fungsi bersama menjadi suatu unit dalam sebuah program komputer; objek merupakan dasar dari modularitas dan struktur dalam sebuah program komputer berorientasi objek.
● Inheritance atau biasa disebut dengan istilah pewarisan, dalam konsep ini kita dapat membuat suatu class baru yang bentuknya dapat disamakan dengan class yang sebelumnya.
Sebagai contoh, sebuah kelas MobilMewah akan mewarisi state dan behaviour dari kelas Mobil. Begitu juga dengan kelas mobilbiasa. Kelas MobilMewah dan mobilbiasa disebut subkelas, atau kelas anak, dari kelas Mobil, yang disebut superkelas, atau kelas induk.Seluruh subkelas akan mewarisi (inherits) state dan behaviour dari superkelasnya. Dengan begitu, semua subkelas dari superkelas yang sama akan memiliki state dan behaviour yang sama. Namun, masing-masing subkelas bisa menambah sendiri state atau behaviournya. Misalkan, pada kelas Mobil tidak terdapat variable nontonTV, namun subkelas MobilMewah memiliki variabel tersebut. Contoh lain misalnya kelas Mobil tidak memiliki metode nyalakanTV, namun MobilMewah memiliki metode itu.
Dalam kasus tertentu subkelas mungkin memiliki implementasi behaviour yang berbeda dengan superkelasnya. Hal seperti ini disebut override. Contohnya subkelas SepedaBalap memiliki implementasi metode ubahGigi yang berbeda dengan implementasi metode tersebut pada superkelas Sepeda.
Tingkat pewarisan tidak hanya terbatas pada dua tingkatan. Dari contoh di atas, kita bisa saja membuat subkelas dari kelas SepedaBalap, dan seterusnya. Kita bisa terus memperpanjang tingkat pewarisan ini sepanjang yang kita butuhkan. Dengan begitu,subkelas-subkelas yang dibuat akan lebih khusus dan lebih terspesialisasi. Namun terdapat batasan pewarisan dalam Java yang disebut single inheritance. Artinya sebuah kelas hanya dapat mewarisi sifat dari satu dan hanya satu superkelas saja. Dalam beberapa bahasa pemrograman berorientasi objek lain, yang berlaku adalah multiple inheritance. Artinya sebuah kelas dapat mewarisi sifat dari beberapa superkelas sekaligus. Dalam Java, terdapat kelas Object yang merupakan superkelas dari semua kelas dalam Java, baik yang builtin ataupun yang kita buat sendiri, langsung maupun tidak langsung. Karena itu sebuah variabel bertipe Object akan dapat menyimpan referensi ke objek apapun dalam bahasa Java.
Manfaat penggunaan konsep pewarisan antara lain: pertama, kita dapat menggunakan kembali kelas-kelas yang kita buat (sebagai superkelas) dan membuat kelas-kelas baru berdasar superkelas tersebut dengan karakteristik yang lebih khusus dari behaviour umum yang dimiliki superkelas. Kedua, kita dapat membuat superkelas yang hanya mendefinisikan behaviour namun tidak memberi implementasi dari metode-metode yang ada. Hal ini berguna jika kita ingin membuat semacam template kelas.
• Encapsulation – Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi ijin untuk mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut.
Encapsulation biasa disebut dengan istilah membungkus atau mengemas sebuah informasi yang akan menghasilkan sebuah objek. Tujuannya agar informasi yang dihasilkan tidak menyebar keluar dari aturan yang ada.
• Polymorphism melalui pengiriman pesan. Tidak bergantung kepada pemanggilan subrutin, bahasa orientasi objek dapat mengirim pesan; metode tertentu yang berhubungan dengan sebuah pengiriman pesan tergantung kepada objek tertentu di mana pesa tersebut dikirim. Contohnya, bila sebuah burung menerima pesan “gerak cepat”, dia akan menggerakan sayapnya dan terbang. Bila seekor singa menerima pesan yang sama, dia akan menggerakkan kakinya dan berlari. Keduanya menjawab sebuah pesan yang sama, namun yang sesuai dengan kemampuan hewan tersebut. Ini disebut polimorfisme karena sebuah variabel tungal dalam program dapat memegang berbagai jenis objek yang berbeda selagi program berjalan, dan teks program yang sama dapat memanggil beberapa metode yang berbeda di saat yang berbeda dalam pemanggilan yang sama. Hal ini berlawanan dengan bahasa fungsional yang mencapai polimorfisme melalui penggunaan fungsi kelas-pertama.
Polymorphism menghasilkan banyak bentuk. Konsep ini mengembangkan konsep pada pewarisan dimana kita dapat membuat dan menghasilkan sebuah class baru yang dapat diperluas kembali menjadi banyak bentuk.
 BLL_LBU ^_^