Post Terbaru
Loading...

Sabtu, 16 April 2016

PHP OOP Part 2 - Enkapsulasi Object (Public, Protected dan Private)

in OOP
Di part 2 (kedua) ini kita akan membahas tentang Enkapsulasi Object (Public, Protected dan Private) yang akan sangat bermanfaat untuk pembuatan hak akses kepada property dan juga method yang ada dalam class

Public, Protected dan Private

Enkapsulasi merupakan salah satu metode yang bisa kita manfaatkan untuk mengatur penyusunan struktur dari sebuah class dengan cara menyembunyikan alur kerja dari class yang kita buat. struktur yang dimaksud disini adalah property dan method.

Jadi dengan enkapsulasi ini kita bisa membatasi akses yang ada di property dan method yang dapat di akses dari luar class, enkapsulasi juga disebut dengan "informasi hiding". enkapsulasi sendiri memiliki 3 jenis hak akses: Private, Public, dan Protected. Mari kita bahas 3 jenis hak akses ini.

Hak Akses Public 

Hak akses yang pertama adalah public, apabila kita menggunakan hak akses public didalam property dan method maka semua kode di luar class bisa mengaksesnya. Termasuk juga class turunannya. Berikut cara penulisan untuk hak akses public.

.
. <?php //Membuat Class Dealer class dealer{ //property var $produk; //method public public function tambah_produk(){ return "Tambah Produk"; } public function update_produk(){ return "Update Produk"; } } //object $hasil = new dealer(); $hasil->produk="Civic"; echo $hasil->produk."<br>"; echo $hasil->tambah_produk()."<br>"; echo $hasil->update_produk(); ?>
Hasilnya seperti berikut:

public

Bisa dilihat pada pada contoh penulisan public, untuk method saya berikut kunci public dan setelah diakses diluar muncul, lalu property saya tidak memberikan kunci public tapi tetap muncul jika di akses dari luar class.

Jadi, intinya kalau property ataupun method tidak ditulis hak akses nya, maka PHP secara otomatis akan menganggapnya sebagai public

Hak Akses Protected

Hak akses yang kedua adalah protected, kalau kita menggunakan hak akses protected maka property dan juga method tidak bisa lagi diakses dari luar class lagi, tapi hanya bisa diakses dari dalam class itu sendiri ataupun turunannya. Berikut cara penulisan untuk hak akses protected:

.
. <?php //Membuat Class Dealer class dealer{ //property protected protected $produk = "Civic"; public function hasil_produk(){ return $this->produk; } //method protected protected function tambah_produk(){ return "Tambah Produk"; } public function hasil_tambah(){ return $this->tambah_produk(); } } //object $hasil = new dealer(); echo $hasil->hasil_produk()."<br>"; echo $hasil->hasil_tambah(); ?>
Hasilnya akan seperti berikut:

protected

Kata kunci $this merujuk kepada objek saat ini, jadi kata kunci $this merupakan cara untuk mengakses isi class dari dalam class itu sendiri.

Ada juga property dan method yang memiliki hak akses protected yang bisa diakses oleh class turunannya juga, berikut contoh penerapannya.

.
. <?php //Membuat Class Dealer class dealer{ //property protected protected $produk = "Vario"; public function hasil_produk(){ return $this->produk; } } // buat class turunan dealer motor class dealer_motor extends dealer{ public function tampilkan_produk() { return $this->produk; } } //object $hasil = new dealer_motor(); echo $hasil->tampilkan_produk()."<br>"; ?>
Hasilnya Seperti Berikut:

protected turunan

Jadi, hak akses protected bisa di akses juga oleh class turunannya juga.

Hak Akses Private

Hak akses yang terakhir adalah Private. kalau kawan-kawan menggunakan hak akses ini, maka yang bisa mengkasesnya hanyalah class itu sendiri, class lain tidak bisa mengaksesnya, termasuk turunannya pun tidak akan bisa mengaksesnya. Berikut Penerapannya.

.
. <?php //Membuat Class Dealer class dealer{ //property private private $produk = "Vario"; public function hasil_produk(){ return $this->produk; } } //object $hasil = new dealer(); echo $hasil->hasil_produk()."<br>"; ?>
Dan Hasilnya Seperti Berikut:

protected

Untuk membuktikan apakah hak akses private benar-benar tidak bisa diakses oleh class lain, mari kita buktikan dengan menggunakan script berikut:

.
. <?php //Membuat Class Dealer class dealer{ //property protected private $produk = "Vario"; public function hasil_produk(){ return $this->produk; } } // buat class turunan dealer motor class dealer_motor extends dealer{ public function tampilkan_produk() { return $this->produk; } } //object $hasil = new dealer_motor(); echo $hasil->tampilkan_produk()."<br>"; ?>
Dan Berikut Hasilnya:


private turunan

Seperti yang sudah kita ketahui bahwasannya kalau menggunakan hak akses private kita tidak bisa mengakses selain dari class itu sendiri, dan terbukti saat kita akses dengan class turunannya hasilnya property nya tidak teridentifikasi.

Jadi kesimpulan dari pembahasan ini adalah, Enkapsulasi Object (Public, Protected dan Private). Untuk penggunaan Public kita bisa mengakses property dan method dari luar class, termasuk juga class turunannya.

Lalu kalau hak akses Protected, kita hanya bisa mengaksesnya dari dalam class itu sendiri dan juga turunannya, dan hak akses Private, kita hanya bisa mengakses hanya dari class itu sendiri, dan class turunannya pun tidak bisa mengaksesnya

Silakan komen dengan memperhatikan aturan berikut
1. Komen relevan, sesuai dengan apa yang dibahas
2. Komen tidak mengandung unsur SARA
3. Mau promo apapun silakan yang penting perhatikan poin 1 dan 2
4. Perhatikan poin 1-3 aja
5. Poin 5 hanya buat iseng aja kok hehehe

#HAPPYCODING