Sunday, November 23, 2014

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.
class Nama_Class {  

    //membuat properti public dengan keyword "var"
    var $nama_Properti1;  

    //membuat properti public dengan keyword "public"
    public $nama_Properti2;      
  
    //membuat method public dengan keyword "function" saja
    function nama_Method1() {    
       ....
    }    

    //membuat method public dengan keyword "public" dan "function"
    public function nama_Method1() {    
       ....
    }    
}  

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.
class Nama_Class {  

    //membuat properti private dengan keyword "private"
    private $nama_Properti;      
  
    //membuat method private dengan keyword "private" dan "function"
    private function nama_Method() {    
       ....
    }    
}  

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.
class Nama_Class {  

    //membuat properti protected dengan keyword "protected"
    protected $nama_Properti;      
  
    //membuat method protected dengan keyword "protected" dan "function"
    protected function nama_Method() {    
       ....
    }    
}  

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

1. Pertama kita buat class Rumus_Bangun_Datar sebagai class utama

<?php 
class Rumus_Bangun_Datar {   
   var $panjang;  
   public $lebar;  
   private $alas;  
   private $tinggi;   
   protected $diameter;  

   protected function luas_persegi()    
   {    
     $hasil= $this->panjang * $this->lebar;   
     return $hasil;    
   }  

   public function show_luas_persegi()    
   {    
     return $this->luas_persegi();    
   }  

   public function set_alas($x)  
   {  
     $this->alas = $x;  
   }  

   private function luas_segitiga()    
   {    
        $this->tinggi = 20;  
     $hasil= $this->alas * $this->tinggi / 2;   
     return $hasil;    
   }  

   public function show_luas_segitiga()    
   {    
     return $this->luas_segitiga();    
   }  

   public function luas_lingkaran($x)    
   {    
      $this->diameter = $x;  
      $r = $this->diameter /2;  
     $hasil= 3.14 * $r * $r;   
     return $hasil;    
   }  
 } 
?>  
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

<?php 
 //Membuat Object dari class Rumus_Bangun_Datar  

    $Rumus_BD = new Rumus_Bangun_Datar;  

 //MENGHITUNG LUAS PERSEGI  
 //Mengeset properti panjang dan lebar yang bersifat public  

    $Rumus_BD->panjang = 7;  
    $Rumus_BD->lebar = 8;  

 //Method luas_persegi bersifat protected  
 //Maka untuk menampilkan hasil method luas_persegi tidak bisa dari luas class  
 //jadi kita gunakan method show_luas_persegi untuk menampilkan hasilnya  

    echo "Luas Persegi = ".$Rumus_BD->show_luas_persegi()."<br/>";  

 //MENGHITUNG LUAS SEGITIGA  

 //Mengeset properti alas yang bersifat private tidak bisa dari luas class  
 //Jadi kita gunakan method set_alas untuk mengeset properti alas  

    $Rumus_BD->set_alas(5);  

 //Untuk properti tinggi juga bersifat private namun sudah diset dari dalam class  
 //Menampilkan hasil method luas_segitiga tidak bisa dari luas class  
 //jadi kita gunakan method show_luas_segitiga untuk menampilkan hasilnya

    echo "Luas Segitiga = ".$Rumus_BD->show_luas_segitiga()."<br/>";  

 //MENGHITUNG LUAS LINGKARAN  

 //Kita tidak bisa mengeset properti diameter dari luar karena bersifat protected  
 //Untuk itu kita mengesetnya secara langsung pada method luas_lingkaran  
 //Menampilkan hasil dari method luas_lingkaran  

    echo "Luas Lingkaran = ".$Rumus_BD->luas_lingkaran(10); 

?> 

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

<?php
class Rumus_Bangun_Ruang extends Rumus_Bangun_Datar{  
  private $tinggi;  

  private function volume_balok()  
   {  
    $this->tinggi = 5;  
    $hasil = $this->panjang * $this->lebar * $this->tinggi;  
    return $hasil;  
   }  

  public function show_volume_balok()  
   {  
     return $this->volume_balok();  
   }  

  public function volume_bola($x)  
   {  
     $this->diameter = $x;  
     $r = $this->diameter /2;  
     $hasil = 4 * 3.14 * $r * $r / 3;  
     return $hasil;  
   }  
 } 
?>  
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

</php 
 //Membuat Object dari class Rumus_Bangun_Ruang  

   $Rumus_BR = new Rumus_Bangun_Ruang;  

 //MENGHITUNG VOLUME BALOK  
 //Mengeset properti panjang dan lebar memanfaatkan properti dari class Rumus_Bangun_Datar  

      $Rumus_BR->panjang = 7;  
      $Rumus_BR->lebar = 8;  

 //Method volume_balok bersifat private jadi tidak bisa siakses dari luar class  
 //Menampilkan hasil volume balok dengan method show_volume_balok  

      echo "Volume Balok = ".$Rumus_BR->show_volume_balok()."<br/>";   

 //MENGHITUNG VOLUME BOLE  

 //Kita tidak bisa mengeset properti diameter dari luar karena bersifat protected  
 //Untuk itu kita mengesetnya secara langsung pada method volume bola  
 //Menampilkan hasil dari method volume_bola  

      echo "Volume Bola = ".$Rumus_BR->volume_bola(10)."<br/>";    

?>  

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 :

2 komentar: