Apa itu Encapsulation?
Encapsulation adalah salah satu prinsip dasar dalam Object Oriented Programming (OOP) yang bertujuan untuk membungkus data dalam satu unit.
Tujuan utama encapsulation adalah untuk menyembunyikan detail internal implementasi objek dari dunia luar dan menyediakan interface yang dapat berinteraksi dengan objek tersebut.
Enkapsulasi dapat dilakukan dengan mendeklarasikan semua variabel di suatu unit (kelas) sebagai privat dan menulis metode publik di dalam kelas tersebut untuk mengatur dan mendapatkan nilai variabel.
Manfaat Encapsulation
Melansir dari geeksforgeeks.org, berikut ini adalah manfaat encapsulation:
Menyembunyikan data
Encapsulation dapat menyembunyikan detail implementasi internal suatu kelas. Hal ini berarti bahwa pengguna kelas tidak perlu mengetahui bagaimana data disimpan dalam variabelnya. Sebaliknya, pengguna berinteraksi dengan kelas melalui metode publik yang dirancang dengan baik, seperti setter dan getter. Dengan demikian, keamanan dapat meningkat dan mencegah manipulasi langsung terhadap data sensitif.
Meningkatkan fleksibilitas
Dengan enkapsulasi, programmer dapat mengontrol akses ke elemen pada kelas dan menyesuaikan tingkat visibilitas sesuai dengan kebutuhan. Hal ini memungkinkan mereka untuk membuat kelas yang menerapkan aturan khusus untuk mengakses dan memodifikasi data.
Dapat digunakan kembali
Encapsulation mendukung penggunaan kembali karena detail implementasi internal suatu kelas disembunyikan dari entitas eksternal. Saat kelas yang dienkapsulasi digunakan di berbagai bagian program atau di proyek lain, perubahan pada penerapan kelas kemungkinan besar tidak akan memengaruhi basis kode lainnya.
Mudah menguji kode
Kode yang dienkapsulasi mudah untuk diuji, terutama selama pengujian unit. Karena kelas memiliki interface yang jelas, fungsionalitas setiap metode dapat diuji secara terpisah dengan lebih mudah.
Memberi kebebasan bagi programmer
Enkapsulasi memberdayakan programmer dengan memberikan kebebasan untuk mengubah detail implementasi internal suatu kelas tanpa memengaruhi interface eksternal yang digunakan oleh bagian lain dari program.
Sebagai contoh, seorang GUI programmer awalnya mengimplementasikan operasi cut-and-paste menggunakan gambar layar. Kemudian, jika dia ingin beralih ke sistem penyimpanan berbasis teks yang lebih efisien, dia dapat menggunakan enkapsulasi untuk memastikan bahwa kode lain yang berinteraksi dengan GUI tidak akan terpengaruh.
Kekurangan Encapsulation
Kekurangan encapsulation menurut logicmojo.com yaitu:
Ukuran kode meningkat
Enkapsulasi dapat menyebabkan peningkatan ukuran kode karena kebutuhan akan metode tambahan dengan access modifier. Sebagai akibatnya, file sumber menjadi lebih besar dan basis kode lebih kompleks serta berpotensi lebih sulit untuk dikelola.
Lebih banyak instruksi
Karena enkapsulasi menggunakan lebih banyak metode untuk mengakses dan memodifikasi elemen data, instruksi tambahan diperlukan dalam kode. Hal ini dapat meningkatkan kerumitan karena setiap metode memerlukan rangkaian instruksinya sendiri.
Waktu eksekusi lebih lama
Instruksi yang ditambahkan karena enkapsulasi dapat menghasilkan waktu eksekusi yang lebih lama untuk suatu program, yang berpotensi memengaruhi kinerja dalam beberapa kasus.
Contoh Encapsulation
Di bawah ini adalah contoh sederhana encapsulation:
Contoh ini mendemonstrasikan enkapsulasi di Java menggunakan kelas Person.
Kelas Person memiliki nama dan umur sebagai data pribadi, yang tidak dapat diakses langsung dari luar kelas. Sebagai gantinya, metode getter dan setter publik (getName(), setName(), getAge(), dan setAge()) digunakan untuk berinteraksi dengan data pribadi.
Di kelas Main, turunan dari Person dibuat, dan nama serta usia diatur menggunakan metode setter. Kemudian, metode setter digunakan untuk memperoleh dan mencetak nama dan umur objek Person.
Singkatnya, contoh ini menunjukkan bagaimana enkapsulasi memungkinkan akses yang terkontrol ke data pribadi kelas Person, menyembunyikan data, dan menyediakan interface yang baik untuk berinteraksi dengan objek.
FAQ (Frequently Asked Question)
Bagaimana proses encapsulation?
Proses enkapsulasi terdiri dari langkah-langkah berikut:
- Identifikasi data dan fungsi yang perlu dienkapsulasi. Pada langkah ini, programmer perlu memahami masalah yang ingin diselesaikan, data yang perlu disimpan, dan fungsi yang perlu dilakukan.
- Buat kelas untuk mengenkapsulasi data dan fungsi. Kelas harus memiliki bagian privat untuk menyimpan data dan bagian publik untuk menampilkan fungsi.
- Deklarasikan anggota data sebagai private. Hal ini akan mencegah kode lain mengakses data anggota secara langsung.
- Buat metode publik untuk mengakses dan memodifikasi anggota data. Metode ini harus digunakan untuk melindungi data dari akses dan modifikasi yang tidak sah.