Selasa, 19 Juni 2007

belajar oop php euy

Orang bilang ga ada kata terlambat untuk belajar, dan pisau yang tumpul apabila diasah terus-menerus maka akan jadi tajam juga. Dengan bermodalkan dua hal itu saya membulatkan tekad untuk belajar OOP, belajar dari dasar... terseok-seok, karena otak sudah terlanjur akrab dengan pemrograman prosedural.

Berikut istilah-istilah yang biasa digunakan dalam OOP, sedikit saya rangkum sebagai langkah awal dalam memahami OOP.
Warning : pengertian berikut dirangkum dengan pemahaman saya yang masih sangat awam akan konsep OOP

Object :
Kumpulan Variabel dan Fungsi yang saling berkaitan
Class :
Adalah blueprint atau rancangan dari object. Jadi dari satu class bisa dibuat banyak object . Object adalah instance dari class.
Contoh : class = sepeda
Object = sepedaGunung, sepedaTandem
Polymorphism :
Berarti suatu benda seakan-akan mempunyai banyak bentuk. Dua objek atau lebih dikatakan polymorphic bila objek-objek itu mempunyai antar muka yang identik namun mempunyai perilaku yang berbeda. Muncul karena interaksi konsep inheritance dan dynamic binding.
Contoh : method sayHello() pada class dog, class cat atau class dog akan menghasilkan keluaran yang berbeda. dog = "guk..guk.." sedangkan cat = "miau..miau.."Jadi class yang berbeda dapat menjawab sebuah pesan yang sama, namun sesuai dengan kemampuan class tersebut.
Inheritance :
adalah pewarisan sifat, sebuah subclass akan mewarisi sifat dari superclass-nya. Subclass dapat melakukan override terhadap sifat dan kemampuan warisan superclass-nya.
enkapsulasi :
Memastikan pengguna sebuah object tidak dapat mengganti keadaan dalam diri sebuah object dengan cara yang tidak layak, hanya method dalam object tersebut yang dapat diberi ijin untuk mengakses keadaannya.

Lanjut ya.... Materi berikut ini merupakan hasil terjemahan dari artikel "An Introduction to OOP in PHP" . Artikel asli dapat langsung dilihat disini

Yang Keren Dari OOP

Mari mulai dari awal dan pelajari konsep dasar. Awalnya, seorang developer PHP menuliskan coding mereka dalam bahasa prosedural. Pada koding semacam ini, Satu hal terjadi setelah hal lainnya dan hal paling menarik yang dapat terjadi adalah penyertaan file lain. Function tersebar disana-sini, dan kumpulan library dari function tersebut dapat membantu memindahkan sesuatu dengan lebih cepat. Ada keterbatasan pada jenis pemrograman seperti ini. Koding dengan cara prosedural cenderung 'merepotkan' bila bekerja dengan 'large site'. Memindahkan sesuatu dengan bantuan include files dapat membantu, tapi bukan penyelesaian dari masalah.

OOP dapat membantu mengatasi semua kerepotan tersebut. Mari kita bicarakan tentang pengertian dari 'object' yang dimaksud dalam OOP. Object adalah kumpulan tipe variabel dalam PHP yang dapat melakukan banyak hal-hal menyenangkan Mereka (object) dapat dilewatkan from place to place sambil maintenace semua properti dan method yang mereka miliki di dalam diri mereka. Jika ini masih belum masuk akal buat anda, bertahan saja, saya akan membantu. Langkah pertama adalah mengetahui cara menciptakan sebuah objek milik anda sendiri!


Object Kesayangan Kita

Object hanyalah type variabel (seperti yang sudah dijelaskan diatas) dengan feature istimewa yang menyertainya. Untuk membuat sebuah object, anda membutuhkan sesuatu yang disebut class. Pikirkanlah class sebagai suatu framework dibelakang sebuah object yang mendefinisikan kegunaan serta variabel-variabel yang disimpan didalamnya. Berikut contohnya:

class myClass {
function myClass(){
}
}
?>

Pada contoh diatas, "myClass" merupakan nama dari class, dan kata 'class' adalah kata kunci yang akan dicari oleh PHP untuk mengetahui apa yang anda lakukan. Didalam pendefinisian class tersebut terdapat fungsi dengan nama "myClass". Saya tidak bermaksud membuat anda bingung, ada alasan mengapa fungsi tersebut diberi nama yang sama dengan class yang menampungnya. Fungsi tersebut merupakan fungsi khusus yang disebut constructor. Hal ini seperti membuat pondasi dan membangun dinding dari sebuah bangunan baru, fungsi 'myClass' dijalankan ketika objek pertama kali diciptakan.

Ah~! sekarang kita sampai pada bagian yang menyenangkan! Object Creation!

Jadi, sekarang kita telah mempunyai sebuah contoh class yang siap untuk digunakan. Tapi untuk dapat mengambil sesuatu didalamnya, kita perlu membuat sebuah object yang mewakilinya. Berikut contohnya :

$mine=new myClass();
?>

Variabel $mine adalah sebuah object yang baru diciptakan. Jika anda melakukan perintah print_r() pada object tersebut anda akan melihat keistimewaannya. Untuk memberitahu PHP bahwa kita ingin menjadikannya sebuah object, kita gunakan kata kunci 'new' diikuti nama class. Contoh diatas BELUM benar-benar melakukan sesuatu, tapi hal itu akan berubah setelah kita berkenalan dengan properties.

Meletakkan Properties
Seperti hal lainnya yang berkaitan dengan class, property sebenernya adalah sesuatu yang telah anda tahu sebelumnya. Property hanyalah sebuah variabel dalam penyamaran. Mengapa mereka berbeda? Didalam sebuah class anda dapat mempunyai variabel, tapi ada variabel yang berasal dari pemanggilan dari level yang lebih tinggi. Variabel ini dapat diakses dari dalam maupun dari luar kelas dan merupakan variabel global didalam sebuah object. Berikut contohnya:

class myClass {
var $my_var = 'testing';
function myClass(){
}
}
$mine=new myClass();
echo $mine->my_var;
?>

Pada contoh diatas, kita menggunakan struktur class seperti pada contoh sebelumnya, tapi kita tambahkan sesuatu yang sedikit berbeda. Variabel '$my_var' yang didefinisikan pada bagian atas menyimpan sebuah nilai yang dapat kita ambil kemudian. Setelah kita membuat sebuah object, ada sebuah operator baru yang diperkenalkan, yaitu '->'. Basically, ini memberitahukan PHP bahwa variabel yang anda referensikan adalah bagian dari object 'mine'. PHP secara otomatis akan menarik current value dari object tersebut dan menampilkannya. dan hal ini tidal hanya sebatas variabel saja, anda juga dapat menggunakan tanda panah ini (->) untuk memanggil method (fungsi didalam class), sebagai contoh :

class myClass {
function myClass(){
}
function echoMe(){
echo 'me';
}
}
$mine=new myClass();
$mine->echoMe();
?>
Apabila script tersebut dijalankan maka akan menghasilkan tulisan "me" pada halaman browser, sederhana bukan??

Langkah Selanjutnya
Sekarang kita akan mengaplikasikan pengetahuan yang sudah kita punya untuk membuat sesuatu yang berguna - misalnya saja sebuah contoh grafik sederhana. Pada contoh berikut kita akan membuat sebuah kotak pada halaman browser (dengan menggunakan tag DIV) dan dengan bantuan PHP serta CSS, akan dilakukan beberapa perubahan terhadapnya. Berikut contohnya:

class myHappyBox {
var $box_height = 100;
var $box_width = 100;
var $box_color = '#EC0000';
function myHappyBox(){
}
function setHeight($value){
$this->box_height=$value;
}
function setWidth($value){
$this->box_width=$value;
}
function setColor($value){
$this->box_color=$value;
}
function displayBox(){
echo sprintf('

',$this->box_height,$this->box_width,$this->box_color);
}
}
$box=new myHappyBox();
$box->displayBox();
?>

Ada beberapa hal baru yang harus diperhatikan disini. Kita sudah tahu bahwa kita akan membuat sebuah gambar kotak dengan menggunakan class ini, dan kita tahu bahwa kotak mempunyai poperty tertentu - yaitu panjang, lebar dan warna. Pada contoh class diatas dapat dilihat ketiga property tersebut mempunyai default value (nilai yang telah ditentukan). Dengan menyimpan default value, anda dapat langsung memanggil displayBox() dan akan menghasilkan kotak berukuran 100x100 pixel berwarna merah tanpa perlu lagi mengeset panjang, lebar dan warna kotak tersebut. Tapi bagaimana jika kita ingin mengubah salah satu nilai dari property tersebut? Untuk itulah dibuat fungsi-fungsi lainnya selain displayBox().

Ada tiga buah fungsi didalam class myHappyBox. Yaitu fungsi untuk menentukan panjang, mamentukan lebar dan menentukan warna, dan ketiga fungsi tersebut bekerja dengan dasar yang sama. Masing-masing dari mereka mengambil nilai dan mengeset property global pada nilai tersebut. jadi, apabila kita ingin mengubah ukuran dari kotak tersebut, hal yang harus dilakukan adalah sebagai berikut:

$box=new myHappyBox();
$box->setHeight(30);
$box->setWidth(300);
$box->displayBox();
?>

Koding diatas akan merubah kotak default dan akan ditampilkan kotak baru dengan lebar yang jauh lebih besar dari pada panjangnya. Perubahan serupa dapat juga dilakukan dengan method setColor() yang akan merubah warna dari kotak, dengan isian nilai pada method setColor() adalah berupa HTML color (Hex).

BUNGKUS !!!!
Jadi, inilah dasar OOP - bukan sesuatu yang menakutkan ataupun perlu dihindari. Malahan OOP bisa jadi suatu hal TERBAIK yang dapat terjadi antara anda dan coding yang anda tulis. Tentu saja menulis ulang aplikasi yang sedang anda buat dengan gaya OOP bisa menjadi sesuatu yang merepotkan, tapi akan selalu ada proyek selanjutnya yang dapat dipertimbangkan. Dan ingat, Ada banyak hal lain yang harus dipelajari selain object, class, method, maupun property seperti yang telah dijelaskan diatas. Anda dapat langsung mengacu ke website PHP.net dan lihat langsung 'their great resources' pada topik OOP. Disitu akan terdapat jawaban atas pertanyaan-pertanyaan yang mungkin sekarang muncul dalam benak anda setelah anda menyelesaikan tutorial ini.










2 komentar:

EM Rukhin mengatakan...

Matur suwun, artikelnya bagus, kalau boleh aku minta tolong dunk, OOP serta contoh class diagramnya, aku ada tugas nich buat software yang pakai OOP, cuma aku masih NOL pruthul alias belum paham.. mudah-mudahan berkenan mbantu

Yuzron Bellamy mengatakan...

terima kasih banyak atas artikelnya mengenai penjelasan tentang OOP, semoga pengalaman anda tentang penggunaan OOP masih banyak lagi yang bisa di post kan agar pembaca bisa belajar dari pengalaman anda.