Jika sebelumnya terbiasa dengan Procedural Oriented Programming, sebaiknya segeralah bertobat dan beralih ke Object Oriented Programming :D karena dewasa ini hampir semua software/aplikasi pakai OOP. Contoh kali ini lagi-lagi untuk newbie yang baru mulai belajar PHP dengan OOP dan meski sudah banyak berkeliaran contoh serupa diluarsana, tak apalah awak buat lagi.
Tidak perlu panjang lebar membahas OOP teori nya, atau tata cara penulisan Kode dsb. Tapi jika bersikeras ingin liat perbandingan singkat OOP vs POP bisa dilihat disini
Untuk konsep yang sangat sangat basic, ada beberapa hal pokok yang harus di fahami dalam OOP
Dalam real-world Class itu pengelompokan Mahluk/benda yang mempunyai karakteristik,fungsi,atau komponen yang sama.
Contoh : Mobil, ribuan jenis mobil di dunia ini tapi kita bisa identifikasi misal
- State nya : Gigi, Roda, Kecepatan, Warna
- Behaviour nya : Tancap Gas, nge-Rem, Ubah gigi
Dalam implementasinya, State = Properties dan Behaviour = Methods.
Jika dalam POP kita sering koding dengan Fungsi maka di OOP ini disebut dengan Method dan ditambah dengan Fitur Hak akses nya.
function tambah($x, $y){ return $x + $y;}echo tambah(3,5); //8
public $kecepatan = 0; public $warna = 'putih'; public $gigi = 0; //gigi normal /*creating methods*/ public function tancapGas($p=0){ //method sperti bisa dibilang jg Setter $this->kecepatan = $this->kecepatan + $p; //kecepatan bertambah } public function ngeRem($q=0){ $this->kecepatan = $this->kecepatan - $q; //kecepatan berkurang } public function ubahGigi($r=0){ $this->gigi = $r; //set gigi } /*creating Getter, utk mendapatkan Valuenya*/ public function getSpeed(){ return $this->kecepatan; } public function getGigi(){ return $this->gigi; } }//end of class
tancapGas(30); //misal set tancap gas ke 30km/jamecho 'Kecepatan : '.$obj->getSpeed().'km/jam'; //lalu dapatkan kecepatan saat ini$obj->ubahGigi(3); //oper gigi ke 3echo '';echo 'Gigi : '.$obj->getGigi(); //print gigi sekarangecho '';$obj->ngeRem(10); //kurangi 10km/jamecho 'Kecepatan : '.$obj->getSpeed().'km/jam'; //lalu dapatkan kecepatan saat ini
Kecepatan : 30km/jamGigi : 3Kecepatan : 20km/jam
/*ini properties*/ public $roda = 4; public $kecepatan = 0; public $warna = 'putih'; public $gigi = 0; //gigi normal protected $pabrikan = 'Honda'; //hak akses protected private $jml_kursi = 4; ... ..... ........ public function infoMobil(){ echo "Jumlah kursinya : ". $this->jml_kursi; echo "Pabrikan : ". $this->pabrikan; } //No series hanya bisa diakses oleh class Mobil dan turunannya protected prosesNoSeries($no){ return "AXN".$no; } }//end of class //turunan pake extends (Toyota adl class turunan dari mobil)class Toyota extends Mobil{ protected $no_series; public function setNoSeries($no){ $this->no_series = $this->prosesNoSeries($no); } public function getNoSeries(){ return $this->no_series; } }$obj2 = new Toyota();$obj2->setNoSeries('IO021');echo $obj2->getNoSeries(); //outputnya : AXNIO021
protected $pabrikan = 'Honda';; public function setWarna($wrn){ $this->warna = $wrn; } public function getWarna(){ return $this->warna; }}//end of class
protected $pabrikan; public function __construct($wrn){ $this->warna = $wrn; $this->pabrikan = 'Honda'; } public function getWarna(){ return $this->warna; }}//end of class$obj = new Mobil('Kuning');echo $this->getWarna();