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
class Mobil{
/*ini properties*/
public $roda = 4;
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
$obj = new Mobil; //bisa jg new Mobil();
$obj->tancapGas(30); //misal set tancap gas ke 30km/jam
echo 'Kecepatan : '.$obj->getSpeed().'km/jam'; //lalu dapatkan kecepatan saat ini
$obj->ubahGigi(3); //oper gigi ke 3
echo '
';
echo 'Gigi : '.$obj->getGigi(); //print gigi sekarang
echo '
';
$obj->ngeRem(10); //kurangi 10km/jam
echo 'Kecepatan : '.$obj->getSpeed().'km/jam'; //lalu dapatkan kecepatan saat ini
Kecepatan : 30km/jam
Gigi : 3
Kecepatan : 20km/jam
class Mobil{
/*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
class Mobil{
private $warna;
protected $pabrikan = 'Honda';;
public function setWarna($wrn){
$this->warna = $wrn;
}
public function getWarna(){
return $this->warna;
}
}//end of class
class Mobil{
private $warna;
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();
Yang request e-Book, Tolong Komen dan Subscribe dengan EMail yang benar yah