Please Kindly Share To Your Social Media

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 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

0. Object 
1. Class
2. Method
3. Properties
4. Hak akses
5. Inheritance
6. Konstruktor/Destuktor
7. Setter/Getter

Object 
Di kehidupan nyata Object punya 2 karakteristik yaitu : State dan Behaviour
misal Manusia punya State (tinggi,lapar,warna,tangan,dsb) dan Behaviour(berjalan, berlari,menggenggam dsb). dalam Programming, konsep nya sama.

Class 

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 lalu 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.

Contoh fungsi di POP
function tambah($x, $y){

return $x + $y;
}
echo tambah(3,5);  //8
Dalam OOP fungsi disebut method, perhatikan contoh berikut : 
PHP code :
<?php 
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

untuk mengakses/memakai/menggunakan class diatas ya kita harus membuat/me-inisialisasi Object nya. 
Caranya seperti ini :

<?php 
$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 '<br/>';
echo 'Gigi : '.$obj->getGigi(); //print gigi sekarang
echo '<br/>';
$obj->ngeRem(10); //kurangi 10km/jam
echo 'Kecepatan : '.$obj->getSpeed().'km/jam'; //lalu dapatkan kecepatan saat ini
Output kode diatas :
Kecepatan : 30km/jam
Gigi : 3
Kecepatan : 20km/jam

Jika diperhatikan Kode class Mobil diatas Properties dan Method nya masih pake Hak akses public semua. 
public artinya semua properties dan method nya bisa diakses di luar class itu. Jika private artinya hanya bisa diakses didalam Class itu sendiri dan jika Protected bisa diakses didalam class itu dan di class turunannya (inheritance)

bagaimana menentukan mana harus private,protected atau public ? 
ya dengan menentukan sendiri, misalnya kita tambah 1 properties ke class Mobil yakni 'pabrikan', kita tentukan bahwa pabrikan ini hanya bisa diakses oleh class itu sendiri dan turunannya lalu 1 properties lagi misal 'jml_kursi' kita set private. ini berlalu juga bagi Methods

<?php 
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

Konstruktor
Karena Destuktor jarang dipakai (stackoverflow) kita akan bahas Konstruktor saja. 
teori nya Konstruktor dijalankan saat pertama kali Object di inisialisasi. tujuannya bisa untuk 
memberi nilai awal pada properties dan mempersingkat penulisan kode dengan meniadakan Setter function

contoh
<?php 
class Mobil{
    private $warna;
protected $pabrikan = 'Honda';;

public function setWarna($wrn){

$this->warna = $wrn;
}

public function getWarna(){

return $this->warna;
}
}//end of class

Contoh diatas jika pakai Konstruktor

<?php 
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();

Demikian contoh singkat dan simple OOP di PHP untuk permulaan sebelum melangkah 
ke OOP yang lebih dalam :D

Yang request e-Book, Tolong Komen dan Subscribe dengan EMail yang benar yah