Object-oriented
Programming (disebut juga OOP/OO) sebetulnya bukan hal baru pada dunia
pemrograman. OOP telah ada selama 2 dekade lebih. Bahasa C++ dan Java
telah lama menggunakan OOP ini. OOP bukan merupakan suatu bahasa ataupun
teknologi baru, tetapi hanya merupakan suatu paradigma/pendekatan untuk
masalah yang akan dipecahkan. Selama bahasa pemrograman itu mendukung
OOP, kita sudah bisa menggunakan OOP ini pada bahasa apapun yang kita
kuasai.
OOP merupakan solusi yang tepat untuk aplikasi yang berskala besar.
Alasannya yaitu OOP memungkinkan kode untuk digunakan kembali
(reusable), aplikasi lebih mudah dipelihara, aplikasi memiliki tingkat
ketergantungan antar modul yang rendah, dan tentunya aliran program
lebih mudah dipahami karena pada OOP, elemen-elemen dalam program
diibaratkan objek-objek pada dunia nyata.
Pada tutorial kali ini akan dibahas dasar-dasar OOP di dalam bahasa
PHP. Versi PHP yang sudah mendukung OOP adalah PHP versi 5 ke atas,
sedangkan versi 4 dan sebelumnya belum sepenuhnya mendukung OOP.
Tutorial ini akan membahas dasar-dasar OOP sambil langsung mempraktekkan
bagaimana OOP tersebut diimplementasikan di PHP.
Enkapsulasi
Didalam OOP, semua elemen program merupakan objek-objek yang saling
berinteraksi satu sama lain. Dalam interaksinya, tiap objek mempunyai
informasi yang bisa diakses oleh objek lain ataupun yang disembunyikan
dari objek lain. Sebagai contoh, dalam dunia nyata, objek mobil memiliki
steer, pedal, yang langsung berinteraksi dengan sopir. Tetapi sopir
tidak secara langsung berinteraksi dengan mesin.
Sama halnya seperti objek-objek dalam OOP. Tiap objek memiliki
informasi yang harus disembunyikan maupun yang tersedia untuk public
(objek lainnya). Dalam OOP ini disebut enkapsulasi (
encapsulation) yang merupakan salah satu konsep OOP yang sangat penting.
Class
Class adalah merupakan “blueprint” dari objek. Sedangkan objek adalah
instance dari class. Sebagai contoh di dunia nyata, class seperti
cetakan kue, dan objek adalah kuenya sendiri. Dari satu class bisa
dibuat berapa pun objek yang diperlukan. Sebuah class dalam php diawali
dengan keyword
class diikuti dengan nama class. Pada contoh di bawah adalah deklarasi sebuah class dalam php dengan nama “artikel”.
// deklarasi class dalam php
class artikel {
// di sini isi code dari class akan ditulis
}
Sebuah class biasanya memiliki ciri-ciri tertentu, seperti dalam
dunia nyata mobil miliki warna, ukuran, jumlah ban, dll. Ciri-ciri ini
disebut dengan attribute/property. Selain attribute, class juga memiliki
operasi-operasi yang bisa dilakukan oleh class tersebut. Seperti pada
mobil memiliki operasi maju, mundur, pindah gigi, dll. Operasi-operasi
ini disebut dengan method.
Dalam program OOP pun sama halnya seperti di dunia nyata. Tiap class
memiliki attribute dan method. Attribute dan method nya pun bisa satu
ataupun sebanyak yang diperlukan. Contoh: class artikel, memiliki
attribute: judul, nama_penulis, tanggal_terbit, kategori, dll. Artikel
juga memiliki method terbitkan(), arsipkan(), hapus(), edit(), dll.
Berikut ini contoh class “artikel” dalam php dengan method dan attribute nya.
class artikel {
// attribute
public $tanggal_terbit;
// method
function terbitkan() {
echo 'artikel berhasil diterbitkan ';
}
}
Keterangan: Seperti kita lihat pada contoh di atas,
attribute adalah variable biasa dan diawali dengan keyword public.
Public merupakan access modifier (access modifier memerlukan pembahasan
lanjut, yang berkaitan dengan encapsulation). Sedangkan method merupakan
fungsi biasa yang memiki argumen ataupun tidak. Method juga bisa
memiliki access modifier sama halnya seperti attribute.
Object
Objek adalah instance dari class, ini berarti class harus
di-instantiate (dibuat objeknya) terlebih dahulu agar bisa digunakan
dalam program (kecuali static class). Untuk membuat objek baru dalam
PHP, digunakan keyword
new.
Berikut adalah contoh pembuatan objek dalam php:
// deklarasi class
class artikel {
public $tanggal_terbit;
function terbitkan() {
echo 'artikel berhasil diterbitkan ';
}
}
// instantiate objek baru
$artikel_a = new artikel();
// instantiate objek lainnya
$artikel_b = new artikel();
Keterangan: Pada contoh di atas, $artikel_a
merupakan objek dari class artikel. Objek ini otomatis telah memiliki
seluruh atribut dan method yang dimiliki oleh class nya, yaitu:
attribute ‘tanggal_terbit’ dan method ‘terbitkan()’. Sama halnya juga
dengan $artikel_b memiliki atribut dan method yang sama. Untuk mengakses
suatu atribut/method dari objek, maka kita bisa menggunakan tanda ->
(strip, lebih besar dari)
Contohnya:
// mengakses attribute
$artikel_a->tanggal_terbit
// mengakses method
$artikel_a->terbitkan()
Inheritance
Sebuah class dapat di-inherit (diwariskan) ke class turunannya,
sehingga class turunannya memiliki attribute dan method yang sama dengan
class induknya, plus bisa ditambah attribute dan method yang
diperlukan. Ini berguna untuk menambah ciri dan fungsi khusus terhadap
class turunan.
Class turunan disebut juga
sub/derived/child class. Sedangkan class induk yang mewarisi disebut sebagai
super/base/parent class.
Sebagai contoh, class artikel bisa diwariskan menjadi class berita.
Class artikel disebut parent class, dan class berita disebut child
class. Dalam inheritance, keyword yang digunakan adalah
extends. Berikut contoh inheritance dalam PHP:
// parent class
class artikel {
public $tanggal_terbit;
function terbitkan() {
echo 'artikel berhasil diterbitkan ';
}
}
// child class
class berita extends artikel {
// attribute tambahan
public $nama_wartawan;
public $nara_sumber;
// method tambahan
function cek_nara_sumber() {
echo 'nara sumber berhasil dicek ';
}
}
Keterangan: Pada contoh di atas, class berita yang
merupakan child class akan otomatis memiliki atribut ‘$tanggal_terbit’
dan method ‘terbitkan()’ sebagai warisan dari parent classnya, yaitu
class artikel. Sebagai tambahan, class berita memiliki atribut
‘$nama_wartawan’, ‘$nara_sumber’ dan method ‘cek_nara_sumber()’ yang
didefinisikan tersendiri pada child class tersebut.
Polymorphism
Polymorphism bisa diartikan memiliki berbagai macam bentuk. Dalam
istilah pemrograman, bisa diartikan method dengan nama yang sama tetapi
memiliki karakteristik operasi yang berbeda-beda. Dalam OOP, ini
berkaitan erat dengan overloading dan overriding.
Di dunia nyata polymorphism bisa diibaratkan dengan power on/off.
Pada komputer, terdapat power on/off. pada HP juga terdapat power
on/off. Pada televisi juga terdapat power on/off. Semua orang mengetahui
fungsi dan cara menggunakannya, yaitu ditekan dan akan
menghidup-matikan alat tersebut. Tetapi sebetulnya, cara kerja di
dalamnya sangat berbeda antara alat satu dengan yang lainnya, meskipun
memiliki nama yang sama (power).
Overloading
Dalam bahasa Java/C++, fasilitas untuk melakukan overloading telah
disediakan. Tetapi dalam PHP, fasilitas tersebut belum tersedia. Namun
overloading bisa juga diimplementasikan di PHP. Untuk melakukan
overloading, dalam PHP bisa menggunakan magic method
__call($name, $arguments).
__call adalah fungsi khusus yang otomatis dijalankan apabila sebuah
objek memanggil method yang tidak ada pada sebuah class. __call memiliki
2 argumen, yang pertama nama method yang dipanggil berupa string, dan
yang kedua adalah argumen method berupa array.
Berikut contoh nya:
class artikel {
public function __call($name, $arguments) {
// jika objek memanggil method dengan nama 'terbitkan_artikel' maka jalankan code di bawah
if ($name == ‘terbitkan_artikel’) {
// jika tidak ada argumen, maka jalankan code ini
if ($arguments[0] == ‘’) {
echo 'artikel berhasil diterbitkan';
}
// jika ada argumen, maka jalankan code ini yang berbeda dengan di atas
if ($arguments[0] != ‘’) {
echo 'artikel berhasil diterbitkan dengan argumen';
}
}
}
}
// instantiate objek
$artikel_a = new artikel();
// memanggil method tanpa argumen
$artikel_a->terbitkan_artikel();
// memanggil method yang sama, tapi dengan argumen
$artikel_a->terbitkan_artikel('argumen_a', 'argumen_b');
Keterangan: Seperti pada contoh di atas, objek
$artikel_a pertama memanggil method terbitkan_artikel() tanpa argumen,
lalu yang kedua memanggil method yang sama tetapi dengan argumen. Method
nya sama, tapi argumen nya berbeda, juga pada isi class nya akan
menjalankan code yang berbeda pula. Inilah salah satu contoh
polymorphism.
Overriding
Overriding dalam oop berkaitan erat dengan inherintance. Overriding
adalah ‘memaksa’ suatu method pada child class agar bekerja dengan
spesifikasi sendiri yang tidak sama dengan method di parent/super class
nya.
Contoh:
// parent class
class artikel {
public $tanggal_terbit;
function terbitkan() {
echo 'artikel telah diterbitkan';
}
function arsipkan() {
echo 'artikel telah diarsipkan';
}
}
// child class
class berita extends artikel {
// method yang mengoverride method dari parent class nya
function arsipkan() {
echo 'berita telah arsipkan';
}
}
// instantiate
$berita = new berita();
// akan memanggil method 'terbitkan()' yang diwariskan dari parent class nya
$berita->terbitkan();
// akan memanggil method arsipkan yang ada pada child class,
// karena method 'arsipkan()' telah dioverride oleh child nya
$berita->arsipkan();
Demikian dasar OOP dan contoh pada bahasa PHP. Sebetulnya masih
banyak konsep OOP yang belum tercakup dalam tulisan yang sederhana ini.
Tetapi dengan ini diharapkan kita bisa mengenal dan memahami dasar /
fundamental OOP yang sering digunakan dalam aplikasi-aplikasi dengan
berbasis OOP dan kita bisa menerapkan OOP pada project kita selanjutnya
sehingga bisa memanfaatkan fitur-fitur OOP dan kelebihannya.
Mudah-mudahan tulisan ini bermanfaat bagi para pembaca sekalian.
Wassalam.
Referensi:
- Object-oriented Programming dengan PHP 5, Ir. M. Farid Azis, M. Kom
- OOP Demystified, James Keogh & Mario Giannini
Source :
http://triswan.wordpress.com/2009/10/09/object-oriented-programming-dengan-php/#comment-483