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
<?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 iniPada 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.<?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"