1. Pengantar OOP dalam PHP
Pemrograman Berorientasi Objek (Object Oriented Programming / OOP) adalah paradigma pemrograman yang berfokus pada objek, yaitu gabungan antara data (atribut/properti) dan perilaku (method/fungsi).
Empat pilar utama OOP adalah:
- Encapsulation
- Inheritance
- Polymorphism
- Abstraction
Pada materi ini, fokus pembahasan adalah Encapsulation (Enkapsulasi).
2. Pengertian Encapsulation
Encapsulation adalah konsep OOP yang bertujuan untuk:
- Membungkus data (property) dan method dalam satu kelas
- Melindungi data agar tidak dapat diakses atau diubah secara sembarangan dari luar kelas
Dengan encapsulation:
- Data menjadi lebih aman
- Kode menjadi lebih rapi, terstruktur, dan mudah dirawat (maintainable)
📌 Analogi sederhana:
Seperti ATM: pengguna hanya bisa menggunakan tombol dan layar, tetapi tidak bisa mengakses sistem di dalam mesin ATM secara langsung.
3. Access Modifier dalam PHP
Encapsulation diterapkan menggunakan access modifier.
3.1 Jenis Access Modifier
| Access Modifier | Akses |
|---|---|
public | Bisa diakses dari mana saja |
protected | Bisa diakses dari class itu sendiri dan class turunan |
private | Hanya bisa diakses dari class itu sendiri |
4. Contoh Tanpa Encapsulation (Tidak Disarankan)
class Mahasiswa {
public $nama;
public $npm;
}
$mhs = new Mahasiswa();
$mhs->nama = “Budi”;
$mhs->npm = “123456”;
echo $mhs->nama;
❌ Masalah:
- Data bisa diubah bebas
- Tidak ada kontrol validasi
5. Encapsulation dengan private
5.1 Membuat Property Private
class Mahasiswa {
private $nama;
private $npm;
}
📌 Property private tidak bisa diakses langsung dari luar class.
6. Getter dan Setter
Untuk mengakses atau mengubah data private, digunakan:
- Setter → untuk mengisi/mengubah data
- Getter → untuk mengambil data
6.1 Contoh Lengkap Getter & Setter
class Mahasiswa {
private $nama;
private $npm;
public function setNama($nama) {
$this->nama = $nama;
}
public function getNama() {
return $this->nama;
}
public function setNpm($npm) {
if (is_numeric($npm)) {
$this->npm = $npm;
} else {
echo “NPM harus berupa angka”;
}
}
public function getNpm() {
return $this->npm;
}
}
6.2 Penggunaan Object
$mhs = new Mahasiswa();
$mhs->setNama(“Budi”);
$mhs->setNpm(“123456”);
echo $mhs->getNama();
echo $mhs->getNpm();
✅ Keuntungan:
- Data terlindungi
- Bisa ditambahkan validasi
7. Encapsulation dengan protected
class User {
protected $username;
}
class Admin extends User {
public function setUsername($username) {
$this->username = $username;
}
}
📌 protected cocok digunakan jika data masih ingin diwariskan ke class turunan.
8. Manfaat Encapsulation
- Keamanan data
- Kontrol akses data
- Mudah melakukan debugging
- Kode lebih profesional
- Mendukung prinsip OOP lainnya
9. Kesalahan Umum Mahasiswa
❌ Menggunakan public untuk semua property ❌ Tidak menggunakan getter & setter ❌ Mengakses property private langsung
10. Studi Kasus Sederhana
Kasus: Akun Bank
class BankAccount {
private $saldo = 0;
public function setor($jumlah) {
if ($jumlah > 0) {
$this->saldo += $jumlah;
}
}
public function tarik($jumlah) {
if ($jumlah <= $this->saldo) {
$this->saldo -= $jumlah;
} else {
echo “Saldo tidak cukup”;
}
}
public function getSaldo() {
return $this->saldo;
}
}
📌 Saldo tidak bisa diubah langsung, hanya melalui method yang disediakan.
11. Ringkasan Materi
- Encapsulation = menyembunyikan data
- Menggunakan access modifier
- Data
privatediakses melalui getter & setter - Membuat program lebih aman dan terstruktur
12. Pertanyaan Diskusi
- Mengapa property sebaiknya dibuat
private? - Apa perbedaan
privatedanprotected? - Apa dampaknya jika encapsulation tidak diterapkan?