← Back to list

ENKAPSULATION

Apa itu Enkapsulasi dalam OOP? Jelaskan konsep dasarnya, mekanisme access modifier (private, protected, public), serta bagaimana getter dan…

Ghanisilva · 2026-04-22 15:55 · 0 claps · 2.7 min read
#enkapsulasi #oop
Open on Medium ↗

ENKAPSULATION

Apa itu Enkapsulasi dalam OOP? Jelaskan konsep dasarnya, mekanisme access modifier (private, protected, public), serta bagaimana getter dan setter berperan dalam mendukung prinsip ini secara aman!

Enkapsulasi (dari kata “encapsulate” = membungkus) adalah salah satu pilar utama OOP yang menggabungkan data (atribut) dan perilaku (metode) ke dalam satu unit bernama kelas, sekaligus membatasi akses langsung dari luar terhadap komponen internal objek. Intinya: data dan fungsi yang memanipulasi data tersebut disimpan bersama, dan hanya antarmuka tertentu yang diperbolehkan untuk mengaksesnya.

Enkapsulasi bukan sekadar menyembunyikan data — melainkan tentang memberikan kontrol penuh kepada kelas atas data miliknya sendiri. Objek di luar kelas hanya boleh berinteraksi melalui “pintu resmi” yang kelas itu sediakan, bukan langsung menyentuh datanya.

Tanpa enkapsulasi, siapa pun bisa mengubah nilai atribut secara sembarangan dari luar kelas — misalnya menetapkan umur = -5, saldo = -999999, atau nama = None. Hal ini menyebabkan data tidak valid dan program berperilaku tidak terduga, serta sangat sulit di-debug karena sumber masalahnya tersebar di mana saja.

Contoh Analogi Nyata :

Bayangkan sebuah mesin ATM. Anda tidak bisa langsung menyentuh uang di dalam ATM — Anda hanya bisa berinteraksi lewat tombol, kartu, dan layar (antarmuka resmi). Mesin ATM sendiri yang mengatur logika di dalam: validasi PIN, cek saldo, debit uang. Anda tidak perlu tahu bagaimana saldo disimpan di database; cukup pakai antarmuka yang tersedia. Itulah enkapsulasi.

Apasih yang dimaksud dengan Acces Modifier? Access Modifier adalah kata kunci yang menentukan siapa yang boleh mengakses atribut atau metode suatu kelas. Di Python, konvensi yang digunakan berdasarkan penamaan adalah:

Atribut private menggunakan name mangling di Python: atribut __saldo dalam kelas RekeningBank secara internal disimpan sebagai _RekeningBank__saldo, sehingga tidak bisa diakses langsung dari luar dengan nama aslinya. Ini bukan enkripsi, tapi mekanisme pencegahan akses tidak sengaja.

Apa itu Getter & Setter? Getter dan Setter adalah metode public yang berfungsi sebagai jembatan terkontrol antara dunia luar dan data private di dalam kelas:

Getter adalah Metode untuk membaca nilai atribut private. Tidak menerima parameter selain self. Bisa menambahkan logika saat pembacaan, seperti format mata uang atau konversi satuan.

Setter Adalah Metode untuk menulis/mengubah nilai atribut private. Menerima nilai baru sebagai parameter. Dapat menambahkan validasi sebelum data disimpan, memastikan data selalu dalam kondisi valid.

Private Method adalah Metode internal kelas (prefix __) yang hanya digunakan di dalam kelas itu sendiri. Contoh: metode pencatatan riwayat yang otomatis dipanggil saat transaksi, tidak perlu diketahui dari luar.

Manfaat utama enkapsulasi dalam pengembangan perangkat lunak: (1) Keamanan data — data tidak bisa dirusak dari luar tanpa melewati validasi; (2) Fleksibilitas implementasi — cara menyimpan data secara internal bisa diubah tanpa memengaruhi kode yang menggunakan kelas tersebut; (3) Kemudahan debug — jika ada data yang salah, kita tahu pasti sumber masalahnya ada di dalam kelas itu karena hanya kelas itu yang bisa mengubah datanya; (4) Keterbacaan dan modularitas — setiap kelas bertanggung jawab atas datanya sendiri.

Contoh Studi Kasus : Sistem Rekening Bank Digital

Sebuah bank digital memiliki sistem rekening nasabah. Saldo adalah data paling sensitif — tidak boleh diubah sembarangan. Dengan enkapsulasi, saldo dibuat private dan hanya bisa dimodifikasi melalui metode resmi setor() dan tarik() yang dilengkapi validasi berlapis. Sistem juga menyimpan riwayat transaksi secara otomatis lewat metode private internal.


메타데이터
post_id
3ccfe94d30e9
slug
nkapsulation-3ccfe94d30e9
url
https://medium.com/@ghanisilva78/nkapsulation-3ccfe94d30e9
canonical_url
https://medium.com/@ghanisilva78/nkapsulation-3ccfe94d30e9
author_url
https://medium.com/@ghanisilva78
status
ok
fetched_at
2026-09-12 00:42:21