Apa yang kalian pelajari dari enkapsulasi dalam pbo ini


       Nah Sebelumnya Apasih Enkapsulasi? Enkapsulasi adalah salah satu yang terpenting di dalam pemrograman berorientasi objek. karena enkapsulasi ini lah yang menentukan pemberian hak akses pada setiap property atau method. enkapsulasi  pada OOP terdiri dari 2. yaitu : Public, dan Private.

Enkapsulasi Public, dan Private

Untuk dapat memberikan hak akses pada method dan property pada sebuah class, di OOP terdapat 2 teknik yaitu, public, dan privat. dan akan kita jelaskan satu persatu. di mulai dengan hak akses public.


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.

Contoh penggunaan hak akses public :

Apa yang kalian pelajari dari enkapsulasi dalam pbo ini

Dan jika dilihat maka akan seperti ini :

Apa yang kalian pelajari dari enkapsulasi dalam pbo ini


Terdapat property dan method yang ditetapkan public. Property dan method tersebut juga dapat diakses di dalam atau diluar class sekaligus.

Akses Privat

Hak akses terakhir dalam konsep enkapsulasi adalah private. Jika sebuah property atau method di-set sebagai private, maka satu-satunya yang bisa mengakses adalah class itu sendiri. Class lain tidak bisa mengaksesnya, termasuk class turunan. Contoh :

Apa yang kalian pelajari dari enkapsulasi dalam pbo ini

Dan Jika Dilihat Melalui web Browser akan Seperti ini :

Apa yang kalian pelajari dari enkapsulasi dalam pbo ini

Jika $mahasiswa->tampi_nama() sobat ganti dengan $mahasiswa_nama maka yang akan muncul adalah Fatal error: Uncaught Error: Cannot access private property mahasiswa::$nama in ~ . Error itu terjadi karena sobat mengakses method yang berproperty private di luar class.

Sekian yang dapat saya sampaikan, mohon maaf bila ada kesalahan dalam penulisan maupun tatabahasa, sekian dan terima kasih.

Wassalamu'alaikum Wr.Wb

 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.

Apa yang kalian pelajari dari enkapsulasi dalam pbo ini

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

Dalam sebuah property atau method jika terdapat atu di nyatakan sebagai Protected, maka property atau method tersebut tidak dapat di akses dari luar class, tapi dapat akses oleh class -nya sendiri atau turunan class tersebut. Apabila kita mengakses Protected yang ada di property maupun method dari luar class maka akan terjadi error.
<?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 iniFatal error: Uncaught Error: Cannot access Protected property sepeda_motor::$pemilik in C:\xampp\htdocs\contoh\index.php:19 Stack trace: #0 {main} thrown in C:\xampp\htdocs\contoh\index.php on line 19

Pada 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. Contoh Hak akses Protected yang dapat diakses dari class turunan <?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 :

Apa yang kalian pelajari dari enkapsulasi dalam pbo 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.