Pengertian Enkapsulasi (Encapsulation)
Assalamualaikum wr.wb
A. Pengertian
Enkapsulasi (encapsulation) adalah metode untuk mengatur struktur class dengan cara menyembunyikan alur kerja dari class tersebut.Struktur class yang dimaksud adalah property dan method.
Enkapsulasi objek -> Public, Protected dan Private.
Untuk membatasi hak akses kepada property dan method di dalam sebuah class, OOP mnyediakan 3 kata kunci; public, protected dan private. Kata kunci ini diletakkan sebelum nama property atau sebelum nama method.
C.Tujuan
Dengan enkapsulasi, kita dapat memilih property dan method apa saja yang boleh diakses, dan nama yang tidak boleh diakses. Dengan menghalangi kode program lain untuk mengubah property tertentu, class menjadi lebih terintegrasi, dan menghindari kesalahan ketika ada yang mencoba mengubahnya. Programmer yang merancang class dapat menyediakan property dan method khusus yang memang ditunjukkan untuk diakses dari luar.
Untuk membatasi hak akses kepada property dan method di dalam sebuah class, OOP mnyediakan 3 kata kunci; public, protected dan private. Kata kunci ini diletakkan sebelum nama property atau sebelum nama method.
B. Latar Belakang
Dengan enkapsulasi, kita bisa membuat pembatasan akses kepada property dan method, sehingga hanya property dan method tertentu yang bisa diakses dari luar class. Enkapsulasi juga dikenal dengan istilah information hiding.C.Tujuan
Dengan enkapsulasi, kita dapat memilih property dan method apa saja yang boleh diakses, dan nama yang tidak boleh diakses. Dengan menghalangi kode program lain untuk mengubah property tertentu, class menjadi lebih terintegrasi, dan menghindari kesalahan ketika ada yang mencoba mengubahnya. Programmer yang merancang class dapat menyediakan property dan method khusus yang memang ditunjukkan untuk diakses dari luar.
D. Alat dan bahan
- Komputer / Laptop
- Text editor
E. Langkah - langkah
1. Hak Akses: Public
Ketika sebuah property atau method dinyatakan sebagai public, maka seluruh kode program di luar class bisa mengaksesnya, termasuk class turunan. Berikut adalah contoh penulisan public property dan public method dalam PHP.
Ketika sebuah property atau method dinyatakan sebagai public, maka seluruh kode program di luar class bisa mengaksesnya, termasuk class turunan. Berikut adalah contoh penulisan public property dan public method dalam PHP.
<?php
// buat class laptop
class
laptop {
// buat public property
public
$pemilik
;
// buat public method
public
function
hidupkan_laptop() {
return
"Hidupkan Laptop"
;
}
}
// buat objek dari class laptop (instansiasi)
$laptop_anto
=
new
laptop();
// set property
$laptop_anto
->pemilik=
"Anto"
;
// tampilkan property
echo
$laptop_anto
->pemilik;
// Anto
// tampilkan method
echo
$laptop_anto
->hidupkan_laptop();
// "Hidupkan Laptop"
?>
Perhatikan penambahan kata public sebelum nama property dan nama method. Kode diatas pada dasarnya sama dengan contoh class laptop dalam tutorial sebelumnya.
Jika hak akses property dan method tidak ditulis, maka PHP menganggap sebagai public.
2. Hak Akses: Protected
Jika sebuah property atau method dinyatakan sebagai protected, berarti property atau method tersebut tidak dapat diakses dari luar class, namun dapat diakses oleh class itu sendiri.
Apabila kita mencoba mengakses protected property atau protected method dari luar class, akan menghasilkan error, seperti contoh berikut :
<?php
// buat class laptop
class
laptop {
// buat protected property
protected
$pemilik
;
// buat protected method
protected
function
hidupkan_laptop() {
return
"Hidupkan Laptop"
;
}
}
// buat objek dari class laptop (instansiasi)
$laptop_anto
=
new
laptop();
// set protected property akan menghasilkan error
$laptop_anto
->pemilik=
"Anto"
;
// Fatal error: Cannot access protected property laptop::$pemilik
// tampilkan protected property akan menghasilkan error
echo
$laptop_anto
->pemilik;
// Fatal error: Cannot access protected property laptop::$pemilik
// jalankan protected method akan menghasilkan error
echo
$laptop_anto
->hidupkan_laptop();
// Fatal error: Call to protected method laptop::hidupkan_laptop()
// from context
?>
Dalam contoh diatas, pemanggilan property $pemilik dan method hidupkan_laptop() dari luar class akan menghasilkan error.
Walaupun akses level protected tidak bisa diakses dari luar class, namun bisa diakses dari dalam class itu sendiri, berikut contohnya :
<?php
// buat class laptop
class
laptop {
// buat protected property
protected
$pemilik
=
"Anto"
;
public
function
akses_pemilik() {
return
$this
->pemilik;
}
protected
function
hidupkan_laptop() {
return
"Hidupkan Laptop"
;
}
public
function
paksa_hidup() {
return
$this
->hidupkan_laptop();
}
}
// buat objek dari class laptop (instansiasi)
$laptop_anto
=
new
laptop();
// jalankan method akses_pemilik()
echo
$laptop_anto
->akses_pemilik();
// "Anto"
// jalankan method paksa_hidup()
echo
$laptop_anto
->paksa_hidup();
// "Hidupkan Laptop"
?>
Hampir sama dengan contoh kita sebelumnya, property $pemilik di deklarasikan sebagai protected, sehingga pengaksesan dari luar class akan menghasilkan error. Oleh karena itu, membuat sebuah public method yang akan menampilkan hasil property $pemilik, yakni method akses_pemilik().
Method hidupkan_laptop() yang tidak dapat diakses secara langsung. Kita tambahkan method paksa_hidup() yang secara internal akan mengakses method hidupkan_laptop().
Hak Akses: Private
Jika sebuah property atau method di-set sebagai private, maka satu-satunya yang bisa mengakses adalah class itu sendiri. Class lain tidak dapat mengaksesnya, termasuk class turunan.
Sebagai contoh, berikut adalah hasil yang di dapat jika kita mengakses property dan method dengan level private.
<?php
// buat class komputer
class
komputer {
// property dengan hak akses protected
private
$jenis_processor
=
"Intel Core i7-4790 3.6Ghz"
;
public
function
tampilkan_processor() {
return
$this
->jenis_processor;
}
}
// buat class laptop
class
laptop
extends
komputer{
public
function
tampilkan_processor() {
return
$this
->jenis_processor;
}
}
// buat objek dari class laptop (instansiasi)
$komputer_baru
=
new
komputer();
$laptop_baru
=
new
laptop();
// jalankan method dari class komputer
echo
$komputer_baru
->tampilkan_processor();
// "Intel Core i7-4790 3.6Ghz"
// jalankan method dari class laptop (error)
echo
$laptop_baru
->tampilkan_processor();
// Notice: Undefined property: laptop::$jenis_processor
?>
Dalam kode diatas, saya membuat 2 buah class, yakni class komputer, dan class laptop. Class laptop merupakan turunan dari class komputer. Di dalam class komputer terdapat property $jenis_processor dengan akses level private. Di dalam class komputer dan class laptop, saya membuat method tampilkan_processor() yang digunakan untuk mengakses property $jenis_processor.
Pengaksesan method tampilkan_processor() dari objek $komputer_baru sukses ditampilkan karena berada di dalam suatu class dimana property $jenis_processor berada.
Akan tetapi, jika method tampilkan_processor() diakses dari objek $laptop_baru yang merupakan turunan dari class komputer, PHP akan mengeluarkan error karena property $jenis_property tidak dikenal.
Akses level private sering digunakan untuk menyembunyikan property dan method agar tidak dapat diakses di luar class.
F. Referensi
http://www.duniailkom.com
Sekian Penjelasan dari saya semoga bermanfaat.
Wassalamualaikum wr.wb