1. Apa itu Enkapsulasi?

Enkapsulasi (Encapsulation) adalah konsep dalam Object Oriented Programming (OOP) yang digunakan untuk membungkus data dan method ke dalam sebuah class, serta mengontrol siapa saja yang boleh mengaksesnya.

Dengan enkapsulasi:

  • Detail proses internal disembunyikan
  • Akses ke data dibatasi
  • Interaksi dilakukan melalui method yang disediakan

Konsep ini sering disebut juga sebagai information hiding.


2. Mengapa Enkapsulasi Penting?

Tanpa enkapsulasi, data dalam program bisa:

  • Diubah sembarangan
  • Menyebabkan error tak terduga
  • Merusak alur logika program

Enkapsulasi membantu:

  • Menjaga keamanan data
  • Membuat program lebih rapi dan modular
  • Memudahkan pengembangan dan pemeliharaan kode

3. Analogi Enkapsulasi dalam Kehidupan Sehari-hari

Bayangkan sebuah AC.

Untuk mengatur suhu AC:

  • Kita tidak membongkar AC
  • Kita cukup menggunakan remote

Di dalam AC terdapat:

  • Rangkaian elektronik
  • Sensor
  • Proses kerja internal

Semua itu disembunyikan dari pengguna.
Remote berfungsi sebagai interface untuk mengakses fungsi AC.

👉 Class = AC
👉 Method public = tombol remote
👉 Proses internal = method private/protected


4. Hak Akses dalam Enkapsulasi

Untuk mengatur enkapsulasi, OOP menyediakan 3 jenis hak akses:

Hak Akses Bisa Diakses Dari
public Dari mana saja
protected Dari class sendiri & class turunan
private Hanya dari class itu sendiri

5. Contoh 1: Hak Akses public

Property dan method public dapat diakses dari luar class.

Contoh Kode

<?php
class Mobil {
   public $pemilik;

   public function nyalakanMobil() {
      return "Mesin mobil dinyalakan";
   }
}

$mobilBudi = new Mobil();
$mobilBudi->pemilik = "Budi";

echo $mobilBudi->pemilik;
echo $mobilBudi->nyalakanMobil();
?>

Penjelasan

  • Property $pemilik bisa diubah langsung
  • Method nyalakanMobil() bisa dipanggil dari luar class
  • Tidak ada pembatasan akses

6. Contoh 2: Hak Akses protected

Property atau method protected:

  • Tidak bisa diakses dari luar class
  • Bisa diakses oleh class itu sendiri atau class turunannya

Contoh Kode (Akan Error)

<?php
class Mobil {
   protected $pemilik = "Budi";
}

$mobil = new Mobil();
echo $mobil->pemilik; // ERROR
?>

Cara Mengakses protected dengan Benar

Gunakan method public sebagai perantara.

<?php
class Mobil {
   protected $pemilik = "Budi";

   public function getPemilik() {
      return $this->pemilik;
   }

   protected function nyalakanMobil() {
      return "Mesin mobil hidup";
   }

   public function paksaNyalakan() {
      return $this->nyalakanMobil();
   }
}

$mobil = new Mobil();
echo $mobil->getPemilik();
echo $mobil->paksaNyalakan();
?>

Penjelasan

  • Property tetap tersembunyi
  • Akses dilakukan lewat method yang disediakan
  • Kontrol penuh di tangan pembuat class

7. Contoh 3: Hak Akses private

Hak akses private adalah yang paling ketat.

Property atau method:

  • Hanya bisa diakses oleh class itu sendiri
  • Tidak bisa diakses oleh class turunan

Contoh Kode

<?php
class Kendaraan {
   private $tipe = "Sedan";

   public function tampilkanTipe() {
      return $this->tipe;
   }
}

class Mobil extends Kendaraan {
   public function tampilkanTipe() {
      return $this->tipe; // ERROR
   }
}

$kendaraan = new Kendaraan();
$mobil = new Mobil();

echo $kendaraan->tampilkanTipe();
echo $mobil->tampilkanTipe(); // ERROR
?>
Penjelasan
  • $tipe hanya dikenal oleh class Kendaraan
  • Class turunan tidak bisa mengakses
  • Cocok untuk data yang benar-benar rahasia

8. Manfaat Enkapsulasi dalam PBO

Dengan menerapkan enkapsulasi, Anda mendapatkan:

✅ Data lebih aman
✅ Class lebih rapi dan terstruktur
✅ Perubahan kode tidak merusak class lain
✅ Mengurangi kesalahan pemrograman
✅ Mudah dikembangkan di masa depan


9. Ringkasan Singkat

  • Enkapsulasi = membungkus data + membatasi akses
  • Gunakan:
    • public → bebas diakses
    • protected → untuk pewarisan
    • private → untuk data internal
  • Akses data tersembunyi melalui method public
  • Enkapsulasi membuat program lebih aman dan profesional

10. Tips Belajar Enkapsulasi

💡 Selalu sembunyikan data penting
💡 Gunakan getter & setter
💡 Jangan semua property dibuat public
💡 Anggap class seperti mesin, bukan sekadar kumpulan variabel

Prev • PHP PBO
Dasar Class, Property, Method, dan Object dalam PBO
03 Feb 2025
Next tidak ada
Belum ada posting berikutnya di kategori ini.