OOP PHP ( Enkapsulasi )


Jika pada pembahasan sebelumnya kita sudah membahas tentang konsep polymorphism, pada kesempatan kali ini kita akan membahas tentang konsep enkapsulasi.
 
Enkapsulasi ( encapsulation ) adalah sebuah metode untuk mengatur struktur class (method dan property) dengan cara menyembunyikan alur kerja dari class tersebut. Dengan menggunakan metode enkapsulasi ini kita bisa membatasi akses kepada method dan property yang akan diakses dari dalam ataupun luar class. 

Dalam enkapsulasi terdapat 3 cara dalam membatasi akses kepada property dan method dalam sebuah class yaitu Public, Private , dan Protected. Mari kita mulai pembahasannya :

Public

Setiap property atau method dinyatakan sebagai public, maka seluruh kode program diluar class bisa mengaksesnya termasuk juga class turunan. Berikut contoh penggunaannya :
<?php
// buat class
class radio {

   public $nama_radio;

   public function nyalakan_radio() {
     return "Nyalakan Radio";
   }
}

$radio_abc = new radio();

$radio_abc->nama_radio="ABC";

echo $radio_abc->nama_radio;

echo $radio_abc->nyalakan_radio();"
?>
Dalam php jika suatu method atau property tidak di tulis inisiasi nya berarti dianggap sebagai akses public.

Protected

Setiap property atau method dinyatakan sebagai protected, maka property dan method tersebut tidak bisa diakses dari luar class namun bisa diakses oleh class itu sendiri dan class turunannya. Berikut contoh penggunaannya :
 
Sekarang kita ganti public dengan protected

<?php
// buat class
class radio {

   protected $nama_radio;

   protected function nyalakan_radio() {
     return "Nyalakan Radio";
   }
}

$radio_abc = new radio();

$radio_abc->nama_radio="ABC";
//Fatal error: Cannot access protected property radio::$nama_radio
echo $radio_abc->nama_radio;
//Fatal error: Cannot access protected property radio::$nama_radio
echo $radio_abc->nyalakan_radio();"
// Fatal error: Cannot access protected method radio::nyalakan_radio
?>

Sekarang kita jalankan , program akan memberikan pesan error yang menyatakan bahwa property/method tersebut tidak bisa di akses.

Sekarang kita coba memanggil property dan method tersebut dalam class tersebut :

<?php

class radio {

   // protected property
   protected $nama_radio="Radio ABC";

   public function akses_radio() {
      return $this->nama_radio;
   }
   protected function nyalakan_radio() {
      return "Nyalakan Radio";
   }
   public function nyalakan_lagi() {
      return $this->nyalakan_radio();
   }
}

$radio_abc = new radio;

echo $radio_abc->akses_radio();

echo $radio_abc->nyalakan_lagi();
?>
 

Private

Setiap property atau method dinyatakan sebagai private, maka property dan method tersebut tidak bisa diakses dari luar class ataupun class turunannya dan hanya bisa diakses oleh class tersebut. Berikut contoh penggunaannya : 

<?php

class radio {

   private $jenis_gelombang = "FM";

   public function tampilkan_jenis_gelombang() {
     return $this->jenis_gelombang;
   }
}

class radio_digital extends radio{

   public function tampilkan_jenis_gelombang() {
     return $this->jenis_gelombang;
   }
}

$radio = new radio();
$radio_digital = new radio_digital;

echo $radio->tampilkan_jenis_gelombang();

echo $radio_digital->tampilkan_jenis_gelombang();
// Notice: Undefined property: radio_digital::$jenis_gelombang
?>

Pada contoh diatas kita menggunakan dua buah class dimana class radio digital merupakan turunan dari class radio. Didalam class radio terdapat property dengan akses private, dimana property ini bisa dipanggil dalam method dalam class radio, sedangkan saat property tersebut di panggil di class turunannya yaitu radio digital, maka program akan menampilkan notice error undifined karena property tersebut di deklarasikan dengan private.

Sekian pembahasan kita kali ini tentang konsep enkapsulasi di OOP PHP, pada pembahasan selanjutnya kita akan membahas tentang penggunaan construktor dan destructor di OOP PHP, selamat mencoba semoga bermanfaat.

Postingan terkait:

Belum ada tanggapan untuk "OOP PHP ( Enkapsulasi )"

Post a Comment