Penerapan Enkapsulasi OOP Yang Baik Pada PHP

 1. Pendahuluan

Enkapsulasi adalah cara menlindungi properti atau method sebuah kelas dari pengaksesan yang tidak diperbolehkan. Dari kalimat tersebut kita belajar bahwasanya ada properti atau method yang tidak sembarang boleh dipakai. Kenapa harus dilakukan demikian? karena enkapsulasi dapat dikatakan privasi, dimana privasi merupakan dasar keamanan. Enkapsulasi mengamankan kode dari pengaksesan yg tidak diijinkan.

Terdapat 3 jenis enkapsulasi untuk properti maupun method, yaitu: Public, Protected, dan Privat. Ketiga pengkapsulan ini dituliskan sebelum nama properti atau method.

2. Enkapsulasi Public

Enkapsulasi yang pertama adalah public atau umum. Hal ini menandakan properti atau method boleh diakses oleh kelas tersebut, kelas turunan, maupun kelas lain. Jadi semua kelas atau diluar kelas pun boleh mengaksesnya.

3. Enkapsulasi Protected

Properti atau method menggunakan enkapsulasi protected hanya boleh diakses oleh kelas yang bersangkutan dan kelas turunannya.

4. Enkapsulasi Private

Properti atau method yang menggunakan enkapsulasi private hanya boleh diakses oleh kelas yang bersangkutan.

5. Contoh Kasus

Berikut ini adalah contoh kasus penggunaan enkapsulasi yang tepat dalam sebuah program. Berdasarkan perbedaan tiga jenis enkapsulasi diatas dapat disimpulkan manfaat dari cara tersebut yaitu menjaga kode program agar aman.

<?php
class Kriptografi{
public $kunci;
public function enkripsi(){
echo "Ini adalah proses enkripsi <br>";
$this->langkah1_enkripsi();
$this->langkah2_enkripsi();
}
public function dekripsi(){
echo "Ini adalah proses dekripsi <br>";
$this->langkah1_dekripsi();
$this->langkah2_dekripsi();
}

protected function pengaturan(){
echo "Pengaturan A diterapkan <br>";
}

private function langkah1_enkripsi(){
echo "Langkah1 enkripsi dikerjakan <br>";
}

private function langkah2_enkripsi(){
echo "Langkah2 enkripsi dikerjakan <br>";
}

private function langkah1_dekripsi(){
echo "Langkah1 dekripsi dikerjakan <br>";
}

private function langkah2_dekripsi(){
echo "Langkah2 dekripsi dikerjakan <br>";
}

}

class Aes extends Kriptografi{

public function halaman1(){
$this->enkripsi();
}

public function halaman2(){
$this->dekripsi();
}

public function _set(){
$this->pengaturan();
}

public function mencoba_langkah1_enkripsi(){
$this->langkah1_enkripsi();
}
}

//objek dari kelas turunan
$aes= new Aes;
echo "<font color='red'>Method public boleh diakses oleh turunan</font> <br>";
$aes->halaman1();
echo "<font color='red'>Method public boleh diakses oleh turunan</font> <br>";
$aes->halaman2();
echo "<font color='red'>Method protected boleh diakses oleh turunan</font> <br>";
$aes->_set();
echo "<font color='red'>Method private tidak boleh diakses oleh turunan</font> <br>";
//$aes->mencoba_langkah1_enkripsi();

echo "<br><br><br><br><br><br> ==========================================<br>";
//objek bukan dari kelas turunan (dari kelas langsung atau kelas lain)
$kripto= new Kriptografi;
echo "<font color='red'>Method public boleh diakses oleh kelas lain</font> <br>";
$kripto->enkripsi();
echo "<font color='red'>Method public boleh diakses oleh kelas lain</font> <br>";
$kripto->dekripsi();
echo "<font color='red'>Method protected tidak boleh diakses oleh kelas lain</font> <br>";
$kripto->pengaturan();
echo "<font color='red'>Method private tidak boleh diakses oleh kelas lain</font> <br>";
$kripto->langkah1_enkripsi();


Pada kode program di atas dapat dilihat sebuah kelas induk yaitu Kriptografi. Kelas tersebut memiliki ketiga jenis enkapsulasi pada method nya. Yaitu public, protected, dan private. Kode program diatas menjelaskan kapan seharusnya kita menggunakan keyword public, protected dan private. 

Pada contoh diatas kelas kriptografi ingin mengizinkan method enkripsi dan dekripsi diakses dimanapun, sehingga kita membuat enkapsulasinya public. Sedangkan method pengaturan adalah method spesial yang diperuntukkan untuk kelas turunan, sehingga enkapsulasinya adalah protected. 

Kita ketahui proses kriptografi umumnya sangat panjang. sehingga kita memecah proses-proses kedalam method-method lain. Proses ini harus runut dan tidak sembarangan. Maka kita tidak mengizinkan yang lain mengakses method tersebut dengan membuat enkapsulasinya private. Dapat dilihat method-method tersebut digunakan sendiri oleh kelas tersebut. Cara ini berguna untuk mempertahankan konsep modular yang sangat berguna.

6. Pengaruh Enkapsulasi Terhadap Kelas Turunan

Pada kelas turunan, method dengan jenis privat saja yang tidak boleh diakses. Menurut anda mengapa diperlukan jenis privat ini?. Method private ini akan error bila diakses oleh kelas turunannya. Dengan kata lain kelas induk tidak mengijinkan kelas turunan untuk menggunakan atau menurunkan sifat dari method tersebut.

Bila kamu perhatikan method private diakses oleh kelas induk sendiri bukan. Nah dari situ kita paham bahwa method tersebut adalah kepentingan dari kelas induk saja. Masih ingat tentang konsep pemrograman modular ?. Kalau sudah lupa mari saya ingatkan. Konsep pemrograman modular ini mengusung konsep pemrograman dengan cara membagi program yang banyak menjadi bagian-bagian yang kecil. Dengan demikian pecahan-pecahan program tersebut sudah barang tentu tidak boleh diakses sembarangan meskipun ia adalah turunan dari kelas tersebut.

Pada gambar di atas, method dengan jenis private tidak boleh diakses oleh kelas turunan. Sedangkan jenis protected boleh. Menurut anda apa fungsi jenis protected ini ?. Mengapa jenis protected ini di izinkan untuk diakses oleh turunan ?.

Dari method jenis protected ini lah kelas induk akan memaksa penggunanya menurunkan kelas tersebut. Bila ingin menggunakan method nya yang berjenis protected. 

Dari turunan-turunan ini menandakan hubungan antara satu file atau kelas dengan file atau kelas lain. Kesimpulannya jika sebuah kelas bukan merupakan turunan dari kelas lain, maka silsilah dari kelas akan terputus.

7. Pengaruh Enkapsulasi Terhadap Kelas Lain

Sebuah kelas yang tidak memiliki hubungan dengan kelas yang mau digunakan dapat dikatakan sebagai kelas lain. Ada beberapa pengaruh enkapsulasi terhadap kelas lain ini. Kelas atau pun bukan kelas (prosedural) hanya boleh mengakses method dengan jenis public saja pada kasus ini.


Pada gambar di atas, kelas lain hanya boleh mengakses method dengan jenis public saja. Menurup anda kapan ini  terjadi?. Pada penjelasan-pejelasan awal mengenai oop, kita sudah memahami bahwa konsep ini memudahkan pengembang dalam menggunakan kode program pihak ketiga, yang open soure ataupun memiliki izin. Nah pada kasus demikian kita sering mengimplementasikan cara ini, yaitu tidak menurunkan kelas tersebut.

8. Kesimpulan

Dari penjelasan enkapsulasi di atas dapat ditarik beberapa kesimpulan yaitu:
  • Enkapsulasi public untuk izin akses bebas.
  • Enkapsulasi protected diperuntukkan untuk turunan.
  • Enkapsulasi privat diperuntukkan untuk kelas bersangkutan berkaitan dengan konsep modular.
Terima kasih telah membaca tulisan ini hingga akhir.



Popular posts from this blog

Cara Menggunakan Template Admin LTE Sebagai Template Web Dinamis

Aplikasi CRUD menggunakan Template Admin LTE

Cara membuat Link ke Halaman lain dan Link ke bagian Halaman