Skip to content Skip to sidebar Skip to footer

Widget Atas Posting

Pengertian Enkapsulasi pada OOP PHP

 Apa itu Enskapsulasi ? Pada pemrograman berbabsis objek (OOP) Enskapsulasi menjadi salah satu aspek terpenting. Pada proses enkapsulasi diterapkan dengan 3 jenis hak skses yaitu : Public, Protected dan Private.

Enskapsulasi atau dalam Bahasa Inggris-nya encapsulation merupakan sebuah metode yang digunakan untuk mengatur class dengan cara menyembunyikan alur kerja dari class tersebut. Struktur class yang dimaksud disini adalah property dan method.

Enskapsulasi dikenal juga dengan ‘Information hiding’, Dengan menggunakan enkapsulasi kita dapat membuat pembatasan hak akses kepada property dan method. Sehingga hanya property dan method tertentu yang hanya dapat diakses dari luar class. Sehingga dengan menggunakan Enskapsulasi kita dapat dengan mudah menentukan method dan property mana saja yang dapat di akses dan mana yang tidak boleh di akses dengan mudah.

Untuk membuat batasan hak akses kepada property dan method dalam sebuah class, OOP (Objek Oriented Programing) menyediakan 3 kata kunci yaitu Public, Protected dan Private. Kata kunci tersebut di letakkan sebelum property atau sebelum method.

Hak Akses Public

Saat sebuah property atau method dinyakan sebagai Public, maka semua kode program yang berada dalam luar class dapat mengakses-nya. termasuk class itu sendiri / class turunan.

Contoh penulisan Public dalam property dan method:

<?php
 
// buat class sepeda motor
class sepeda_motor {
 
   // buat Public property
   Public $pemilik;
 
   // buat Public method
   Public function hidupkan_sepeda_motor() {
     return "Hidupkan sepeda motor";
   }
}
  
// buat objek dari class sepeda motor (instansiasi)
$sepeda_motor_andi = new sepeda_motor();
  
// set property
$sepeda_motor_andi->pemilik="andi";
  
// tampilkan property
echo $sepeda_motor_andi->pemilik; // andi
  
// tampilkan method
echo $sepeda_motor_andi->hidupkan_sepeda_motor(); // "Hidupkan sepeda motor"
?>
Seperti yang dapat kita lihat pada kode program diatas ada penambahan kata Public sebelum nama property dan method. Jika pada hak akses property dan method tidak tertulis, maka PHP akan menganggapnya sebagai Public.

Hak Akses Protected

Dalam sebuah property atau method jika terdapat atu di nyatakan sebagai Protected, maka property atau method tersebut tidak dapat di akses dari luar class, tapi dapat akses oleh class -nya sendiri atau turunan class tersebut. Apabila kita mengakses Protected yang ada di property maupun method dari luar class maka akan terjadi error.
<?php
 
// buat class sepeda motor
class sepeda_motor {
 
   // buat Protected property
   Protected $pemilik;
 
   // buat Protected method
   Protected function hidupkan_sepeda_motor() {
     return "Hidupkan sepeda motor";
   }
}
  
// buat objek dari class sepeda motor (instansiasi)
$sepeda_motor_andi = new sepeda_motor();
  
// set property
$sepeda_motor_andi->pemilik="andi";
  
// tampilkan property
echo $sepeda_motor_andi->pemilik; // andi
  
// tampilkan method
echo $sepeda_motor_andi->hidupkan_sepeda_motor(); // "Hidupkan sepeda motor"
?>
Maka hasilnya akan error seperti berikut ini

Fatal error: Uncaught Error: Cannot access Protected property sepeda_motor::$pemilik in C:\xampp\htdocs\contoh\index.php:19 Stack trace: #0 {main} thrown in C:\xampp\htdocs\contoh\index.php on line 19

Pada contoh diatas, pemanggilan property $pemilik & method hidupkan_sepeda_motor() dari luar class maka akan terjadi error. Akses level Protected bisa dii akses dari dalam class itu sendiri namun tidak dapat di akses dari luar class perhatikan contoh berikut ini :

<?php
 
// buat class sepeda_motor
class sepeda_motor {
 
   // buat Protected property
   Protected $pemilik="Andi ";
 
   Public function akses_pemilik() {
      return $this->pemilik;
   }
   Protected function hidupkan_sepeda_motor() {
      return "Hidupkan sepeda motor";
   }
   Public function paksa_hidup() {
      return $this->hidupkan_sepeda_motor();
   }
}
  
// buat objek dari class sepeda_motor (instansiasi)
$sepeda_motor_andi = new sepeda_motor();
  
// jalankan method akses_pemilik()
echo $sepeda_motor_andi->akses_pemilik(); // "andi"
  
// jalankan method paksa_hidup()
echo $sepeda_motor_andi->paksa_hidup(); // "Hidupkan sepeda_motor"
?>
Pada contoh kode program di atas saya menambahkan sebuah Public method yang menampilkan property $pemilik, yaitu akses_pemilik(). Dan begitu juga dengan method hidupkan_sepeda_motor(). Yang saya tambahkan method paksa_hidup() secara internal akan dapat mengakses method hidupkan_sepeda_motor(). Fungsi dari penambahan Public method akses_pemilik dan paksa_hidup agar pengaksesan dari luar class tidak terjadi error.

Contoh Hak akses Protected yang dapat diakses dari class turunan
<?php
 
// buat class kendaraan
class kendaraan{
 
   // property dengan hak akses Protected
   Protected $jenis_kendaraan = "Roda Dua";
}
  
// buat class sepeda_motor
class sepeda_motor extends kendaraan{
   Public function tampilkan_kendaraan() {
     return $this->jenis_kendaraan;
   }
}
  
// buat objek dari class sepeda_motor (instansiasi)
$sepeda_motor_baru = new sepeda_motor();
  
// jalankan method
echo $sepeda_motor_baru->tampilkan_kendaraan(); // "Roda Dua"
?>

Perhatikan kode diatas, walaupun method $jenis_kendaraan di set sebagai Protected pada class kendaraan, tetapi masih dapat diakses dari class sepeda_motor yang merupakan turunan class dari class kendaraan.

Hak Akses Private

Hak akses Private, jika dalam sebuah property atau methot di set sebagai Private, maka yang hanya dapat mengakses adalah class itu sendiiri. Class-class yang lain-pun tidak dapat mengaksesnya walaupun class tersebut class turunan.

Hak akses Private sering kali digunakaan untuk menyembunyikan property dan method agar tidak dapat diakses dari luar class.

Contoh hak akses Private :

<?php
 
// buat class kendaraan
class kendaraan {
   
   // property dengan hak akses Protected
   Private $jenis_kendaraan = "Roda dua";
   
   Public function tampilkan_kendaraan() {
     return $this->jenis_kendaraan;
   }
}
  
// buat class sepeda_motor
class sepeda_motor extends kendaraan{
  
   Public function tampilkan_kendaraan() {
     return $this->jenis_kendaraan;
   }
}
  
// buat objek dari class sepeda_motor (instansiasi)
$kendaraan_baru = new kendaraan();
$sepeda_motor_baru = new sepeda_motor();
  
// jalankan method dari class kendaraan
echo $kendaraan_baru->tampilkan_kendaraan(); // "Roda dua"
  
// jalankan method dari class sepeda_motor (error)
echo $sepeda_motor_baru->tampilkan_kendaraan();
?>

Maka akan terjadi error seperti berikut ini :

Pada kode diatas, terdapat dua class yaitu class kendaraan dan class sepeda_motor. class sepeda_motor merupakan class turunan dari class kendaraan. Di dalam class kendaraan terdapat property $jenis_kendaraan dengak akses level Private. Dalam class kendaraan dan class sepeda_motor terdapat method tampilkan_kendaraan() yang digunakan untuk mengakses property $jenis_kendaraan.

Pengaksesan method tampilkan_kendaraan() dari objek $kendaraan_baru sukses di tampilkan karena berada dalam satu class dimana property $jenis_kendaraan berada. Namun jika method $tampilkan_kendaraan di akses dari objek $sepeda_motor_baru yang merupakan turunan dari class kendaraan, maka akan mengeluarkan error property $jenis_kendaraan tidak dikenal.

Post a Comment for "Pengertian Enkapsulasi pada OOP PHP"