Salah satu prinsip OOP yang terpenting adalah encapsulation, yaitu membatasi akses dari luar terhadap property dan method yang dimiliki oleh suatu Class. Akses dari luar harus melalui public interface yang disediakan oleh object. Cara untuk menerapkan encapsulation adalah menggunakan Access Modifier.
Public dan Private Access Modifier
Di bagian sebelumnya kita sudah melihat keyword public. Public access modifier ini maka property atau method bisa diakses dari luar Class. Access modifier yang lain adalah private. Access modifier ini menyebabkan property atau method hanya bisa diakses di dalam Class. Terdapat access modifier lain yaitu protected, yang akan juga kita bahas nanti.
Contoh penggunaan Public Access Modifier :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php class HandphoneKorea { public $merk; public function getMerk(){ return $this->merk; } } $hp = new HandphoneKorea(); $hp->merk = 'Samsung'; echo 'Merk HP adalah : '. $hp->getMerk(); ?> |
Contoh penggunaan Private Access Modifier :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php class HandphoneKorea { private $merk; public function getMerk(){ return $this->merk; } } $hp = new HandphoneKorea(); $hp->merk = 'Samsung'; echo 'Merk HP adalah : '. $hp->getMerk(); ?> |
Akan menimbulkan error karena property $merk dicoba untuk diakses dari luar Class.
Setter dan Getter
Untuk mengakses private property, cara yang OOP banget adalah menggunakan Setter dan Getter.
Getter adalah public method untuk mendapatkan nilai private property.
Setter adalah public method untuk memberikan / mengatur nilai private property.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php class HandphoneKorea { private $merk; public function setMerk($merk){ $this->merk = $merk; } public function getMerk(){ return $this->merk; } } $hp = new HandphoneKorea(); $hp->setMerk('Samsung'); echo 'Merk HP adalah :'. $hp->getMerk(); ?> |
Kegunaan Access Modifier
Berdasarkan prinsip encapsulation OOP, Class yang baik adalah yang terlindung oleh akses dari luar. Hanya setter dan getter lah yang berhak berurusan langsung dengan akses luar. Hal ini dimaksudkan untuk mencegah modifikasi dari luar Class. Contoh dibawah menunjukkan hanya mobil Jepang saja yang akan ditampilkan. Mobil diluar Jepang tidak bisa tampil :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php class Mobiljepang { private $merk; public function setMerk($merk){ $merkJepun = ['Honda','Toyota','Isuzu','Suzuki','Nissan']; if(in_array($merk,$merkJepun)){ $this->merk = $merk; } } public function getMerk(){ return $this->merk; } } $mobil = new Mobiljepang(); $mobil->setMerk('BMW'); echo 'Mobilnya adalah :'. $mobil->getMerk(); ?> |
Private Method
Private method biasanya digunakan untuk mengerjakan proses internal di dalam suatu class. Misalnya mobil yang melaju. Sebelum mobil maju, di dalamnya ada proses untuk injak kopling, ubah perseneling, dan injak gas.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?php class Mobil{ public function maju(){ $maju = $this->injakKopling(); $maju .= $this->ubahPerseneling(); $maju .= $this->injakGas(); $maju .= "Brooom....<br>"; echo $maju; } private function injakKopling(){ return "Injak Kopling <br>"; } private function ubahPerseneling(){ return "Ubah Perseneling <br>"; } private function injakGas(){ return "Injak Gas <br>"; } } $mobil = new Mobil(); $mobil->maju(); ?> |
Akses global hanya tinggal memanggil method maju() saja. Proses internal di dalamnya kita tidak perlu tahu.
Dengan menerapkan prinsip Encapsulation pada OOP, pembuatan aplikasi yang kompleks dapat lebih disederhanakan. Salah satu tujuan lahirnya teknik OOP adalah Managing Complexity.