Pengertian Enkapsulasi Objek (Public, Protected dan Private)
Assalamualaikum wr.wb
Pagi kawan, pada hari ini saya akan sharing tentang Pengertian Enkapsulasi Objek (Public, Protected dan Private).
A. Pengertian
Enkapsulasi (encapsulation) adalah sebuah metoda untuk mengatur struktur class dengan cara menyembunyikan alur kerja dari class tersebut.
Struktur class yang dimaksud adalah property dan method. Dengan enkapsulasi, kita bisa membuat pembatasan akses kepada property dan method, sehingga hanya property dan methodtertentu saja yang bisa diakses dari luar class. Enkapsulasi juga dikenal dengan istilah ‘information hiding’.
B. Latar Belakang
Enkapsulasi berfungsi memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi ijin untuk mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut.
C. Maksud dan tujuan
Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi izin untuk mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya.
D. Alat dan bahan
- Komputer / Laptop
- Text Editor
E. Materi
Di dalam dasar-dasar OOP, ada istilah encapsulation. Istilah ini terkait dengan aksesibilitas properties dalam suatu class. Dengan encapsulation ini, kita bisa mengatur sebuah properti apakah hanya bisa diakses dalam class tersebut saja, atau tidak.Aksesibilitas properties dalam encapsulation ini ada tiga sifat:
- Public: properti dapat diakses darimanapun
- Private: properti hanya dapat diakses dari dalam class saja
- Protected: properti hanya dapat diakses dari dalam class atau class turunan (inheritanced class).
Pengertian Hak Akses Public
Jika sebuah method dan property menggunakan public, maka method dan property tersebut dapat di akses dari luar atau dari dalam class tersebut. perlu di ketahui, pada method dan property yang tidak di tetapkan hak aksesnya menggunakan public, private dan protected, maka hak akses pada method atau property tersebut adalah secara default menjadi public. seperti penulisan oop yang kita pelajari sebelumnya.
Pengertian Hak Akses Private
Hak akses kedua yang akan kita bahas adalah private. private adalah hak akses yang melarang method atau property yang menggunakan nya di larang di akses dari luar class. jadi hak akses private hanya bisa di akses dari dalam class itu sendiri.
Pengertian Hak Akses Protected
nah, setelah memahami penjelasan tentang public dan private, selanjutnya kita akan membahas tentang hak akses protected pada oop php. jika property dan method di tetapkan dengan protected, berarti property dan method tersebut tidak bisa di akses dari luar class.
Untuk membedakan ketiganya, perhatikan contoh berikut ini class-kendaraan.php
<?php
class kendaraan {
protected $jumlahRoda;
public $warna;
public $bahanBakar;
public $harga;
private $merek;
function statusHarga() {
if ($this->harga > 50000000) $status = 'Mahal';
else $status = 'Murah';
return $status;
}
function setMerek($x) {
$this->merek = $x;
}
function setHarga($x) {
$this->harga = $x;
}
function bacaMerek() {
return $this->merek;
}
function bacaHarga() {
return $this->harga;
}
function __construct($x, $y) {
$this->merek = $x;
$this->harga = $y;
}
}
?>
Perhatikan class di atas. Untuk properti ‘warna’, ‘bahan bakar’ dan ‘harga’ dibuat sebagai public properties. Sedangkan untuk properti ‘jumlahRoda’ dan ‘merek’, masing-masing sebagai protected dan private properties. Selanjutnya, perhatikan script contoh berikut ini
contoh.php
<?php
include 'class-kendaraan.php';
$kendaraan1 = new kendaraan('Yamaha MIO', 10000000);
echo 'Nama merek : '.$kendaraan1->merek;
?>
Dalam script di atas, setelah proses instantisasi dan setting properti untuk obyek kendaraan1, akan dilakukan pengaksesan ke properti merek secara langsung (tanpa method), dengan memberikan perintah $kendaraan1->merek Apa yang terjadi jika script di atas dijalankan? Ternyata akan muncul error Fatal error: Cannot access private property kendaraan::$merek Hal ini terjadi karena properti merek bersifat private, sehingga properti ini tidak bisa diakses dari luar class.
Bagaimana dengan akses ke properti harga secara langsung? Perhatikan script berikut ini
contoh.php
<?php
include 'class-kendaraan.php';
$kendaraan1 = new kendaraan('Yamaha MIO', 10000000);
echo 'Harga : '.$kendaraan1->harga;
?>
Ternyata jika script di atas dijalankan,bisa memunculkan harga dari Yamaha Mio. Nah... yang menjadi pertanyaan, apakah bisa kita mengakses sebuah properti yang sifatnya private dalam class dari luar? Jawabnya adalah bisa, namun tidak dilakukan secara langsung dengan mengakses properti nya namun menggunakan method. Sebagai contoh, misalkan kita ingin mengakses properti merek yang sifatnya private, maka kita bisa menggunakan method bacaMerek(). contoh.php
<?php
include 'class-kendaraan.php';
$kendaraan1 = new kendaraan('Yamaha MIO', 10000000);
echo 'Harga : '.$kendaraan1->bacaMerek();
?>
Oya, bagaimana dengan deklarasi properties menggunakan ‘var’ seperti pada contoh-contoh di awal, misalnya:
class kendaraan {
var $jumlahRoda;
var $warna;
var $bahanBakar;
var $harga;
var $merek;
.
.
.
}
Penggunaan ‘var’ di depan nama properties, secara otomatis akan bersifat sebagai public.
Berikutnya, muncul pertanyaan apakah yang bisa dibuat encapsulation dg sifat private, protected dan public ini hanya untuk properties saja? Jawabnya adalah TIDAK, sebuah function atau method pun bisa diterapkan hal ini. Sebagai contoh misalkan kita buat method statusHarga() sebagai private method. class-kendaraan.php
<?php
class kendaraan {
protected $jumlahRoda;
public $warna;
public $bahanBakar;
public $harga;
private $merek;
private function statusHarga() {
if ($this->harga > 50000000) $status = 'Mahal';
else $status = 'Murah';
return $status;
}
function setMerek($x) {
$this->merek = $x;
}
function setHarga($x) {
$this->harga = $x;
}
function bacaMerek(){
return $this->merek;
}
function bacaHarga(){
return $this->harga;
}
function __construct($x, $y){
$this->merek = $x;
$this->harga = $y;
}
}
?>
Kemudian kita cek, apakah efek jika sebuah method dibuat private dengan memanggil method statusHarga() di dalam script. contoh.php
<?php
include 'class-kendaraan.php';
$kendaraan1 = new kendaraan('Yamaha MIO', 10000000);
echo 'Status harga : '.$kendaraan1->statusHarga();
?>
Jika script di atas dijalankan, maka akan muncul pesan error sbb:
Fatal error: Call to private method kendaraan::statusHarga() from context ''
Yang menginformasikan bahwa method statusHarga() bersifat private sehingga tidak bisa diakses dari
luar class.
F. Referensi
G. Hasil dan kesimpulan
Dengan enkapsulasi, kita bisa memilih property dan method apa saja yang boleh diakses, dan mana yang tidak boleh diakses. Dengan menghalangi kode program lain untuk mengubahproperty tertentu, class menjadi lebih terintegrasi, dan menghindari kesalahan ketika seseorang ‘mencoba’ mengubahnya. Programmer yang merancang class bisa menyediakan property danmethod khusus yang memang ditujukan untuk diakses dari luar.
Yak, itu tadi penjelasan singkat tentang menginstall CMS Schoolhos, jangan lupa untuk kunjungi terus blog saya untuk mengetahui kelanjutan materi ini Sekian Termiakasih
Wassalamualaikum wr.wb
1 komentar:
Write komentarMantap mas,by Didik Prabowo
ReplyArtikelnya sangat membantu.