Blogger Anak Babagan

Ds. Babagan RT 01 RW 03

Jumat, 26 Februari 2016

Tutorial PHP OOP Part 5 : Perbedaan dari Public, Private dan Protected

Tutorial PHP OOP Part 5 : Perbedaan dari Public, Private dan Protected

 


Pada konsep dasar pemrograman PHP berorientasi obyek kita mengenal istilah atau fitur yang disebut dengan Enkapsulasi. Fitur ini berguna untuk menentukan hak akses bagi setiap properti dan method dalam class. Enkapsulasi atau bahasa inggrisnya disebut encapsulation sejatinya merupakan teknik pengemasan sebuah class.

Pada teknik enkapsulasi terdapat tiga jenis hak akses yaitu public, private dan protected. Public merupakan akses paling luas yang mengijinkan akses dari manapun meski dari luar class. Selanjutnya adalah Private, yaitu ijin akses hanya untuk didalam class dan yang terakhir adalah Protected yaitu ijin akses untuk dari dalam class dan class-class turunannya.

Note : Untuk mengetahui lebih lanjut tentang class turunan (Inheritance) insyaAllah akan ditulis pada artikel selanjutnya.

Public Akses

Public akses merupakan akses terluas bagi properti dan method. Dengan akses ini kita bisa melakukan apapun dan dari manapun. Untuk membuat sebuah properti bersifat public kita cukup menuliskan keyword "var" pada properti atau keyword "function" pada method.

Namun demikian kita bisa juga menuliskan "public" sebagai pengganti "var" pada properti dan menuliskan "public" didepan keyword "function" pada sebuah method.
  1. class Nama_Class {    
  2.   
  3.     //membuat properti public dengan keyword "var"  
  4.     var $nama_Properti1;    
  5.   
  6.     //membuat properti public dengan keyword "public"  
  7.     public $nama_Properti2;        
  8.     
  9.     //membuat method public dengan keyword "function" saja  
  10.     function nama_Method1() {      
  11.        ....  
  12.     }      
  13.   
  14.     //membuat method public dengan keyword "public" dan "function"  
  15.     public function nama_Method1() {      
  16.        ....  
  17.     }      
  18. }    

Private Akses

Private akses merupakan akses terbatas hanya didalam class saja. Artinya kita tidak bisa mengakses properti dan method dari luar class termasuk class turunan. Namun properti bersifat private masih bisa kita akses dari luar class dengan method yang bersifat public.

Untuk membuat sebuah properti dan method bersifat private, kita harus menambahkan keyword private didepannya.
  1. class Nama_Class {    
  2.   
  3.     //membuat properti private dengan keyword "private"  
  4.     private $nama_Properti;        
  5.     
  6.     //membuat method private dengan keyword "private" dan "function"  
  7.     private function nama_Method() {      
  8.        ....  
  9.     }      
  10. }    

Protected Akses

Protected akses mengijinkan sebuah properti dan method diakses dari dalam class dan class-class turunan dari class utama (parent class).

Untuk membuat sebuah properti dan method bersifat protected, kita harus menambahkan keyword protected didepannya.
  1. class Nama_Class {    
  2.   
  3.     //membuat properti protected dengan keyword "protected"  
  4.     protected $nama_Properti;        
  5.     
  6.     //membuat method protected dengan keyword "protected" dan "function"  
  7.     protected function nama_Method() {      
  8.        ....  
  9.     }      
  10. }    

Contoh perbedaan public, private dan protected dapat dilihat berikut ini :

1. Pertama kita buat class Rumus_Bangun_Datar sebagai class utama

  1. <?php   
  2. class Rumus_Bangun_Datar {     
  3.    var $panjang;    
  4.    public $lebar;    
  5.    private $alas;    
  6.    private $tinggi;     
  7.    protected $diameter;    
  8.   
  9.    protected function luas_persegi()      
  10.    {      
  11.      $hasil$this->panjang * $this->lebar;     
  12.      return $hasil;      
  13.    }    
  14.   
  15.    public function show_luas_persegi()      
  16.    {      
  17.      return $this->luas_persegi();      
  18.    }    
  19.   
  20.    public function set_alas($x)    
  21.    {    
  22.      $this->alas = $x;    
  23.    }    
  24.   
  25.    private function luas_segitiga()      
  26.    {      
  27.         $this->tinggi = 20;    
  28.      $hasil$this->alas * $this->tinggi / 2;     
  29.      return $hasil;      
  30.    }    
  31.   
  32.    public function show_luas_segitiga()      
  33.    {      
  34.      return $this->luas_segitiga();      
  35.    }    
  36.   
  37.    public function luas_lingkaran($x)      
  38.    {      
  39.       $this->diameter = $x;    
  40.       $r = $this->diameter /2;    
  41.      $hasil= 3.14 * $r * $r;     
  42.      return $hasil;      
  43.    }    
  44.  }   
  45. ?>    
Pada class diatas terdapat 5 buah properti dengan akses yang berbeda, yaitu :
  • $panjang = public
  • $lebar = public
  • $alas = private
  • $tinggi = private
  • $diameter = protected
Dan juga terdapat 4 buah method dengan akses yang berbeda pula :
  • luas_persegi = protected
  • show_luas_persegi = public
  • set_alas = public
  • luas_segitiga = private
  • show_luas_segitiga = public
  • luas_lingkaran = public

2. Selanjutnya kita buat object dan menguji masing-masing properti dan method yang ada didalam class Rumus_Bangun_Datar

  1. <?php   
  2.  //Membuat Object dari class Rumus_Bangun_Datar    
  3.   
  4.     $Rumus_BD = new Rumus_Bangun_Datar;    
  5.   
  6.  //MENGHITUNG LUAS PERSEGI    
  7.  //Mengeset properti panjang dan lebar yang bersifat public    
  8.   
  9.     $Rumus_BD->panjang = 7;    
  10.     $Rumus_BD->lebar = 8;    
  11.   
  12.  //Method luas_persegi bersifat protected    
  13.  //Maka untuk menampilkan hasil method luas_persegi tidak bisa dari luas class    
  14.  //jadi kita gunakan method show_luas_persegi untuk menampilkan hasilnya    
  15.   
  16.     echo "Luas Persegi = ".$Rumus_BD->show_luas_persegi()."<br/>";    
  17.   
  18.  //MENGHITUNG LUAS SEGITIGA    
  19.   
  20.  //Mengeset properti alas yang bersifat private tidak bisa dari luas class    
  21.  //Jadi kita gunakan method set_alas untuk mengeset properti alas    
  22.   
  23.     $Rumus_BD->set_alas(5);    
  24.   
  25.  //Untuk properti tinggi juga bersifat private namun sudah diset dari dalam class    
  26.  //Menampilkan hasil method luas_segitiga tidak bisa dari luas class    
  27.  //jadi kita gunakan method show_luas_segitiga untuk menampilkan hasilnya  
  28.   
  29.     echo "Luas Segitiga = ".$Rumus_BD->show_luas_segitiga()."<br/>";    
  30.   
  31.  //MENGHITUNG LUAS LINGKARAN    
  32.   
  33.  //Kita tidak bisa mengeset properti diameter dari luar karena bersifat protected    
  34.  //Untuk itu kita mengesetnya secara langsung pada method luas_lingkaran    
  35.  //Menampilkan hasil dari method luas_lingkaran    
  36.   
  37.     echo "Luas Lingkaran = ".$Rumus_BD->luas_lingkaran(10);   
  38.   
  39. ?>   

3. Jika program diatas dijalankan akan menghasilkan tampilan berikut ini :

Luas Persegi = 56
Luas Segitiga = 50
Luas Lingkaran = 78.5

4. Lalu kita buat class Rumus_Bangun_Ruang yang merupakan turunan dari class bangun datar

  1. <?php  
  2. class Rumus_Bangun_Ruang extends Rumus_Bangun_Datar{    
  3.   private $tinggi;    
  4.   
  5.   private function volume_balok()    
  6.    {    
  7.     $this->tinggi = 5;    
  8.     $hasil = $this->panjang * $this->lebar * $this->tinggi;    
  9.     return $hasil;    
  10.    }    
  11.   
  12.   public function show_volume_balok()    
  13.    {    
  14.      return $this->volume_balok();    
  15.    }    
  16.   
  17.   public function volume_bola($x)    
  18.    {    
  19.      $this->diameter = $x;    
  20.      $r = $this->diameter /2;    
  21.      $hasil = 4 * 3.14 * $r * $r / 3;    
  22.      return $hasil;    
  23.    }    
  24.  }   
  25. ?>    
Pada class diatas terdapat 1 buah properti dengan akses yang private, yaitu $tinggi.

Dan juga terdapat 3 buah method dengan akses yang berbeda :
  • volume_balok = private
  • show_volume_balok = public
  • volume_bola = public

5. Kemudian kita buat object dan menguji masing-masing properti dan method yang ada didalam class Rumus_Bangun_Ruang

  1. </php   
  2.  //Membuat Object dari class Rumus_Bangun_Ruang    
  3.   
  4.    $Rumus_BR = new Rumus_Bangun_Ruang;    
  5.   
  6.  //MENGHITUNG VOLUME BALOK    
  7.  //Mengeset properti panjang dan lebar memanfaatkan properti dari class Rumus_Bangun_Datar    
  8.   
  9.       $Rumus_BR->panjang = 7;    
  10.       $Rumus_BR->lebar = 8;    
  11.   
  12.  //Method volume_balok bersifat private jadi tidak bisa siakses dari luar class    
  13.  //Menampilkan hasil volume balok dengan method show_volume_balok    
  14.   
  15.       echo "Volume Balok = ".$Rumus_BR->show_volume_balok()."<br/>";     
  16.   
  17.  //MENGHITUNG VOLUME BOLE    
  18.   
  19.  //Kita tidak bisa mengeset properti diameter dari luar karena bersifat protected    
  20.  //Untuk itu kita mengesetnya secara langsung pada method volume bola    
  21.  //Menampilkan hasil dari method volume_bola    
  22.   
  23.       echo "Volume Bola = ".$Rumus_BR->volume_bola(10)."<br/>";      
  24.   
  25. ?>    

6. Jika keseluruhan program diatas dijalankan akan menghasilkan tampilan berikut ini :

Luas Persegi = 56
Luas Segitiga = 50
Luas Lingkaran = 78.5
Volume Balok = 280
Volume Bola = 104.66666666667

Referensi :

0 komentar:

Posting Komentar