Pemrograman
Berorientasi Obyek (PBO)
Pemrograman berorientasi obyek adalah
sebuah paradigma dalam pemrograman yang mengelompokkan fungsi, prosedur,
variabel ataupun konstanta terkait dalam satu kesatuan (kelas) seperti obyek
dalam dunia nyata. Obyek sendiri merupakan wujud dari kelas, secara umum
dikenal dengan nama instan. Teknik-teknik dalam pemrograman ini merupakan
pengembangan dari teknik sebelumnya seperti modularitas, polimorfisme, dan
enkapsulasi. Saat ini ada banyak bahasa pemrograman yang telah mendukung
pemrograman berorientasi obyek ini, seperti C++, C#, Java, Javascript, PHP, Python,
Ruby, dan Objective C.
Dalam PBO setiap program akan
menyatakan kumpulan dari obyek dan bukan lagi kumpulan fungsi ataupun kumpulan
baris kode. Pada PBO ini setiap obyek memiliki kemampuan untuk menerima pesan,
memproses data dan mengirim data ke obyek lainnya. Setiap obyek dapat dilihat
sebagai program sendiri yang memiliki peran dan tanggungjawab masing-masing. Pengembangan
program dengan menggunakan teknik PBO ini populer dalam program berskala besar
karena fleksibel dan memudahkan dalam perbaikan.
PBO: Pemrograman Berbasis Prototipe
Javascript menggunakan PBO dengan
model pemrograman berbasis prototipe. Model ini tidak mengenal kelas, yang ada
adalah obyek. Obyek dalam model ini dapat dimodifikasi secara runtime seperti
penambahan variabel (properti) ataupun metode (fungsi/prosedur). Model ini juga
dikenal dengan istilah pemrograman PBO tanpa kelas, berorientasi prototipe atau
berbasis instan.
Javascript Object Oriented Programming
Obyek Utama (Bawaan)
Javascript memiliki banyak obyek
bawaan seperti Math, Array, String dan Object. Setiap obyek dalam Javascript
adalah instan dari obyek Object, sehingga memiliki semua properti dan metode
yang ada.
Obyek Buatan
Javascript merupakan bahasa PBO yang
menggunakan kata kunci function untuk mendefinisikan suatu kelas. Oleh karena
itu, pembuatan kelas sama dengan pembuatan fungsi dalam Javascript. Berikut ini
merupakan format yang dapat digunakan untuk mendefinisikan kelas pada
javascript.
function NamaKelas () {
}
Atau dalam bentuk yang lebih lengkap
function NamaKelas (argumen1, argumen2, …,
argumenN)
{
this.namavar1
= nilaiInisial;
this.namavar2
= nilaiInisial;
…
this.namaFungsi1
= function(parameter1, parameter2, …, parameterN){
…
}
…
}
Hal yang dapat diperhatikan pada
format diatas adalah namavar1 dan namavar2 merupakan properti dari kelas
tersebut. Pembuatan properti dari suatu obyek dilakukan dengan menambahkan kata
kunci this di awal dari nama properti tersebut, seperti diperlihatkan dalam
format diatas. Sedangkan pembuatan metode atau fungsi dari obyek dilakukan
dengan cara yang sama hanya dengan properti dengan menambahkan definisi
fungsinya dengan menggunakan kata kunci function.
Pembuatan obyek dari kelas yang telah
didefinisikan diatas dapat dilakukan dengan menggunakan format berikut.
var
namaObyek = new NamaKelas ( ) ;
Kemudian untuk mengakses properti
ataupun metode yang dimiliki oleh suatu obyek dapat dengan menggunakan operator
titik (.) setelah nama obyek diikuti nama properti atau metodenya. Mengenai aturan
penamaan kelas dapat mengikuti aturan penamaan fungsi pada materi sebelumnya,
contohnya ditunjukan dibawah ini.
<script>
function SegiEmpat(){
this.panjang
= 0;
this.lebar
= 0;
this.hitungLuas
= function(){
var
luas = this.panjang * this.lebar;
return
luas;
}
this.hitungKeliling
= function(){
var
kel = 2 * (this.panjang + this.lebar);
return
kel;
}
}
// contoh pengunaannya
var s = new SegiEmpat();
s.panjang = 4;
s.lebar = 3;
alert(s.hitungLuas());
alert(s.hitungKeliling());
</script>
Apabila pembuatan dilakukan dengan
menggunakan format yang pertama, bentuk definisinya akan seperti berikut.
<script>
function SegiEmpat(){ }
SegiEmpat.prototype.panjang = 0;
SegiEmpat.prototype.lebar = 0;
SegiEmpat.prototype.hitungLuas = function(){
var
luas = this.panjang * this.lebar;
return
luas;
}
SegiEmpat.prototype.hitungKeliling =
function(){
var
kel = 2 * (this.panjang + this.lebar);
return
kel;
}
// contoh pengunaannya
var s = new SegiEmpat();
s.panjang = 4;
s.lebar = 3;
alert(s.hitungLuas());
alert(s.hitungKeliling());
</script>
Dari contoh diatas dapat dilihat ada
penggunaan kata kunci prototype pada obyek yang dibuat untuk menambahkan
properti ataupun metodenya.