Enkapsulasi merupakan proses menyembunyi detail implementasi internal suatu objek agar hanya dapat diakses melalui antarmuka yang disediakan. Konsep ini penting untuk melindungi integritas program dan memudahkan pemeliharaan. Enkapsulasi diterapkan dalam Java dengan menggunakan modifier akses untuk menentukan ruang lingkup suatu atribut atau metode.
2. Konsep Enkapsulasi
Enkapsulasi bisa diterjemahkan sebagai proses untuk menutupi semua detail dari
sebuah object yang tidak mendukung karakteristik khas dari object.
Hal ini berarti data property dan method dari object hasil abstraksi dibungkus oleh
struktur class agar terlindungi
Object lain hanya berkomunikasi dengan object tersebut melalui antarmuka
(interface) yang disediakan oleh object bersangkutan.
Rincian implementasi internal pada object dibuat tersembunyi sehingga tidak
dapat diketahui dan diakses oleh object lain.
Object lain hanya dapat menjalankan method change_gear (int gear) tanpa
mengetahui posisi gear saat sebelum diganti.
Misal, pada class mobil, data variabel current_gear dibuat private sehingga object
lain tidak bisa mengakses variabel tersebut.
3. Konsep Enkapsulasi sangat penting dilakukan untuk menjaga keutuhan program
agar dapat diakses sewaktu-waktu sekaligus menjaga program tersebut.
Dasar enkapsulasi dalam Java adalah Class. Konsep kerja dari enkapsulasi akan
melindungi sebuah program dari akses atau pun intervensi (campur tangan) dari
program lain yang mempengaruhinya.
Hal ini sangat menjaga keutuhan program yang telah dibuat dengan konsep dan
rencana yang sudah ditentukan dari awal.
Perhatikan bentuk implementasi sederhana enkapsulasi berikut:
5. Penjelasan Contoh 1
Tipe modifier public dan private memiliki fungsi yang berbeda.
Modifier public yang terdapat dalam class Latih1 pada variabel x menyebabkan
nilai dari variabel x dapat diakses oleh class Pintar.
Adapun variabel y yang menggunakan modifier private tidak dapat dipanggil/
diakses oleh class Pintar sehingga saat dicompile muncul pesan kesalahan “y has
private access in Latih1. System.out.println(“Panggil y: “+panggil.y);”
Yang artinya “y memiliki akses private (terbatas/ khusus) pada class Latih1.
Sehingga compiler tidak bisa melanjutkan proses kompilasi pada baris perintah
System.out.println(“Panggil y: “+panggil.y);”
6. Prosedur Enkapsulasi dalam PBO
Pada PBO, enkapsulasi diwujudkan dalam bentuk class.
Adapun dalam class tersebut terdapat sebuah property dan method yang memiliki
hak akses tertentu dalam lingkupnya.
Hak akses tersebut dibuat menggunakan access modifier.
No Akses Keterangan
1 Private Memberikan akses hanya kepada anggota classnya untuk
menggunakan dan/atau mengubah nilai dari method atau properties
class tersebut.
2 Protected Memberikan hak akses kepada anggota classnya dan anggota class
hasil inheritance dari class tersebut.
3 Public Memberikan hak akses kepada properties dan method agar dapat
digunakan di luar class tersebut.
7. Enkapsulasi berfungsi untuk menyembunyikan data sekaligus tembok penghalang
yang mencegah kode atau data diakses oleh data lain di luar class.
Enkapsulasi dapat diartikan sebagai pembungkus dengan tujuan menjaga suatu
proses program agar tidak dapat diakses secara sembarangan atau diintervensi
oleh pogram lain.
Ada dua hal mendasar dalam enkapsulasi, yaitu:
Information Hiding. Digunakan untuk menyembunyikan informasi dari suatu class
sehingga anggota class tersebut tidak bisa diakses dari luar. Dilakukan dengan
memberikan akses kontrol private pada saat mendeklarasikan attribute atau
method.
Interface to Access Data. Jika melakukan Information Hiding terhadap attribute
pada suatu class, untuk melakukan perubahan terhadap attribute yang
disembunyikan tersebut dilakukan dengan cara membuat suatu interface berupa
method untuk menginisialisasi atau mengubah nilai dari suatu attribute.
Dalam enkapsulasi ada tiga keyword, yaitu:
8. Adapun aksesibilitas keyword enkapsulasi antara lain sebagai berikut:
No Keyword
Pada Class dan
Interface
Pada Method dan Variabel
1 Public Dapat diakses di
manapun
Diwarisi oleh subclassnya, dapat diakses di
manapun.
2 Protected Tidak bisa
diterapkan
Diwarisi oleh subclassnya, dapat diakses oleh
method yang sepaket.
3 Private Tidak bisa
diterapkan
Tidak dapat diakses di manapun kecuali oleh
method-method yang ada di dalam classnya.
Aksesibilitas Public Private Protected
Class yang sama Ya Ya Ya
Sembarang class dalam package yang sama Ya Tidak Ya
Sembarang class di luar package Ya Tidak Tidak
Subclass dalam package yang sama Ya Tidak Ya
Subclass di luar package Ya Tidak Ya
9. Prosedur rancangan program aplikasi PBO
dengan penerapan Enkapsulasi
Enkapsulasi secara umum sebagai sebuah proses yang membuat satu jenis paket
data jaringan menjadi jenis data lainnya.
Enkapsulasi terjadi ketika sebuah protokol berada pada lapisan yang lebih rendah
menerima data dari protokol yang berada pada lapisan lebih tinggi serta
meletakkan data ke format data yang dipahami oleh protokol tersebut.
Dalam OSI references model, proses enkapsulasi yang terjadi pada lapisan
terendah umumnya disebut sebagai framing, sedangkan dasar dari enkapsulasi
dalam java adalah class.
Perhatikan contoh program sederhana enkapsulasi berikut:
11. Penjelasan Contoh 2
Dari contoh 2 di atas, dapat kita lihat bahwa method Luas dan method Keliling
‘bersembunyi’ di atas method main. Sementara pada method main hanya
dilakukan pemanggilan dua method tersebut.
Berbeda dengan kebiasaan saat sebelum mempelajari enkapsulasi pada Java
dimana semua method letaknya berada di bawah method main.
Pada class lingkaran tersebut, attribute/ variabel radius diberi modifier private
(private double radius) dan agar si variabel radius ini bisa diakses di subclass/
method di bawahnya, dibuatlah interface lingkaran dengan modifier public
(public lingkaran(double radius)).
Kemudian interface lingkaran tersebut dibuatkan objeknya (A) untuk melakukan
pemanggilan method Luas dan Keliling.
12. Keunggulan Enkapsulasi dalam PBO
Enkapsulasi dalam PBO sangat penting untuk keamanan serta menghindari
kesalahan pemrograman.
Mengacu kepada perlindungan terhadap implementasi (penerapan) object internal.
Object tersebut berasal dari interface public dan bagian private yang merupakan
kombinasi data dan methode internal.
Manfaat utamanya adalah bagian internal dapa berubah tanpa mempe-ngaruhi
bagian-bagian program lain.
Adapun penggunaan modularitas memiliki arti object dapat dikelola secara
independen.
Oleh karena kode sumber bagian internal object dikelola secara terpisah dari
interface maka bebas melakukan modifikasi yang tidak menyebabkan masalah
pada bagian lain dari sistem.
Hal ini akan mempermudah dalam mendistribusikan obejct dari sistem.
13. Bahan Praktek (Khusus Netbeans GUI)
Ikuti tautan berikut, download, praktekkan dan pelajari (membuat Menu Utama):
https://youtu.be/Nv4hujA5T-Q
14. “
”
Sekian dan terima kasih
Jika ada materi yang kurang/ belum dipahami, silahkan tanyakan.