A. Definisi Enkapsulasi
Enkapsulasi (Encapsulation) adalah konsep PBO yang menyatukan data (atribut) dan perilaku (method) dalam satu unit, yaitu kelas, sambil menjaga agar data tertentu tidak bisa diakses secara langsung dari luar kelas.
Agar aman, atribut biasanya dibuat private, dan aksesnya dilakukan melalui method khusus yaitu:
- setter → untuk mengubah nilai
- getter → untuk mengambil nilai
Analogi:
Bayangkan sebuah brankas di bank:
- Bagian dalam brankas tidak bisa langsung diakses oleh nasabah.
- Nasabah harus lewat petugas (method) yang mengatur kapan brankas bisa dibuka.
- Petugas itu adalah getter/setter.
Dengan cara ini, data menjadi aman dan terkendali.
B. Tujuan Enkapsulasi
Berikut beberapa tujuan utama enkapsulasi:
1. Melindungi Data (Data Protection / Security)
Data penting tidak boleh diubah sembarangan.
Atribut dibuat private agar tidak bisa diakses langsung dari luar.
2. Mengendalikan Akses (Controlled Access)
Pengguna tidak bisa sembarangan memasukkan nilai.
Hanya melalui setter/getter yang sudah dibuat aman.
3. Mempermudah Maintenance
Jika aturan akses berubah, cukup mengubah setter/getter tanpa merusak bagian lain program.
4. Menyembunyikan Implementasi
Pengguna tidak perlu tahu bagaimana data diproses di dalam kelas.
Mereka hanya memakai method publik tanpa melihat “mesin” di dalamnya.
Analogi :
Seperti membeli air galon di toko:
Kamu tidak pernah melihat bagaimana air difilter atau diproses. Kamu hanya menerima air yang sudah siap pakai. Proses internal disembunyikan, tapi tetap aman dan terkontrol.
C. Penerapan Enkapsulasi Menggunakan Setter dan Getter
Untuk menerapkan enkapsulasi dalam Java:
- Atribut dibuat private
- Disediakan method getter untuk membaca nilai
- Disediakan method setter untuk mengubah nilai
1. Struktur Dasar Setter dan Getter dalam Java
Contoh kelas Java menggunakan enkapsulasi
public class Siswa {private String nama;private int umur;// Setter untuk mengubah nilaipublic void setNama(String namaBaru) {nama = namaBaru;}public void setUmur(int umurBaru) {if (umurBaru > 0) { // Validasiumur = umurBaru;} else {System.out.println("Umur tidak boleh negatif!");}}// Getter untuk membaca nilaipublic String getNama() {return nama;}public int getUmur() {return umur;}}
Cara Menggunakan di Main
public class Main {public static void main(String[] args) {Siswa s1 = new Siswa();// Mengisi data menggunakan setters1.setNama("Andi");s1.setUmur(16);// Mengambil data menggunakan getterSystem.out.println("Nama: " + s1.getNama());System.out.println("Umur: " + s1.getUmur());}}
Penjelasan Alur Enakpsulasi
tidak bisa diakses langsung dari luar kelas.
- setNama() dan setUmur() untuk mengubah nilai
- getNama() dan getUmur() untuk membaca nilai
Contoh: umur tidak boleh negatif
inilah tujuan pengendalian akses
Analogi Setter dan Getter
Setter
Seperti kita menitipkan uang di bank:
- Tidak boleh memasukkan uang langsung ke brankas
- Harus lewat petugas bank (setter)
- Petugas akan mengecek uang palsu (validasi)
Getter
Seperti kita melihat saldo ATM:
- Kita tidak membuka server bank
- Kita cukup menekan tombol ATM (getter)
- Mesin memberi informasi saldo dengan aman