Enkapsulasi (Encapsulation)
Video Pembelajaran
SC: Kelas Terbuka dengan Bahasa Indonesia.
-
Apa itu Enkapsulasi?
Enkapsulasi adalah proses penyatuan atau penggabungan atribut dan method dari suatu objek menjadi satu kesatuan, sekaligus melakukan pembatasan akses langsung terhadap komponen dari objek tersebut.
Tujuan Enkapsulasi:
-
Menyembunyikan struktur internal dari suatu objek (Information Hiding / Data Hiding).
-
Melindungi atribut dari perubahan di luar class secara sembarangan. Dengan enkapsulasi, atribut dapat diatur menjadi mode read-only (hanya bisa dibaca) atau write-only (hanya bisa ditulis).
-
Mempermudah implementasi jika suatu saat terjadi perubahan kebutuhan sistem (requirements).
-
Mempermudah proses pengujian unit (unit testing) pada sistem.
Mekanisme Enkapsulasi:
-
Mengubah "Access Level Modifier" dari atribut menjadi "private", sehingga atribut tersebut tidak dapat diakses secara langsung dari luar class.
-
Menyediakan method "Getter" dan "Setter" yang bersifat public sebagai jalur resmi untuk mengakses atau memodifikasi atribut private tersebut.
-
Tingkat Akses (Access Level Modifier)

Terdapat 4 jenis access modifier untuk atribut dan method, yaitu:
-
Public: Atribut atau method dapat diakses dari mana saja.
-
Protected: Dapat diakses dari luar package, asalkan class yang mengakses adalah subclass (mewarisi class asal).
-
No Modifier (Package-Private): Hanya dapat diakses oleh class-class yang berada di dalam package yang sama.
-
Private: Sangat tertutup, hanya dapat diakses dari dalam class itu sendiri.
Catatan: Khusus untuk level Class, hanya ada 2 modifier yang diizinkan, yaitu Public dan No Modifier.
-
Konsep Setter, Getter, dan Keyword "this"
Getter: Merupakan public method yang berfungsi untuk mengambil dan mengembalikan nilai dari sebuah atribut private. Method ini pasti memiliki nilai kembalian (return value).
Setter: Merupakan public method yang berfungsi untuk memanipulasi, memasukkan, atau mengubah nilai dari sebuah atribut private. Method ini tidak memiliki nilai kembalian (menggunakan tipe void).
Atribut Read-Only & Write-Only:
-
Read-Only Attribute: Sebuah atribut yang hanya dibuatkan method getter saja, tanpa setter.
-
Write-Only Attribute: Sebuah atribut yang hanya dibuatkan method setter saja, tanpa getter.
Keyword "this": Keyword "this" merujuk pada current object (objek yang sedang aktif saat itu). Keyword ini sangat sering digunakan di dalam setter untuk menghindari kebingungan sistem ketika nama atribut dan nama parameter memiliki penulisan yang persis sama.
-
Contoh Implementasi Kode
Bentuk Tanpa Enkapsulasi (Kurang Aman): public class Mobil { public String merek; public int kecepatan; }
Bentuk Dengan Enkapsulasi (Best Practice): public class Mobil { private String merek; private int kecepatan;
public void setMerek(String merek) {
this.merek = merek;
}
public String getMerek() {
return merek;
}
public void setKecepatan(int kecepatan) {
this.kecepatan = kecepatan;
}
public int getKecepatan() {
return kecepatan;
}
}
-
Notasi Access Modifier pada UML Class Diagram
Ketika Anda mendesain sistem menggunakan UML Class Diagram, access modifier dituliskan menggunakan simbol khusus sebelum nama atribut atau method:
-
Tanda plus (+) melambangkan modifier Public.
-
Tanda pagar (#) melambangkan modifier Protected.
-
Tanda minus (-) melambangkan modifier Private.
-
Untuk No Modifier, tidak perlu diberikan simbol apa pun.
Contoh Pembacaan Diagram:
-
nama: String (Tanda minus berarti ini adalah atribut private berukuran String)
-
getNama(): String (Tanda plus berarti ini method public yang mengembalikan nilai String)
-
setNama(newNama: String): void (Tanda plus berarti method public tanpa nilai kembalian/void)