Salah satu cara kita bisa menegakkan enkapsulasi data adalah melalui penggunaan accessors dan mutators. Peran pengakses dan mutator adalah untuk mengembalikan dan mengatur nilai-nilai keadaan objek. Mari kita belajar bagaimana memprogram accessors dan mutators Jawa. Sebagai contoh, kami akan menggunakan a Kelas pribadi dengan status dan konstruktor yang sudah ditentukan:
Metode Accessor
Sebuah pengakses Metode digunakan untuk mengembalikan nilai bidang pribadi. Ini mengikuti skema penamaan yang mengawali kata "get" ke awal nama metode. Sebagai contoh, mari kita tambahkan metode accessor untuk nama depan, nama tengah dan nama belakang:
Metode ini selalu mengembalikan tipe data yang sama dengan bidang pribadi terkait (mis., String) dan kemudian mengembalikan nilai bidang pribadi itu.
Kita sekarang dapat mengakses nilai-nilai mereka melalui metode objek Person:
Metode mutator
Metode mutator digunakan untuk menetapkan nilai bidang pribadi. Ini mengikuti skema penamaan yang mengawali kata "set" ke awal nama metode. Misalnya, mari tambahkan bidang mutator untuk alamat dan nama pengguna:
Metode ini tidak memiliki tipe pengembalian dan menerima parameter yang merupakan tipe data yang sama dengan bidang pribadi yang sesuai. Parameter ini kemudian digunakan untuk mengatur nilai bidang pribadi itu.
Sekarang mungkin untuk mengubah nilai untuk alamat dan nama pengguna di dalam objek Person:
Mengapa Menggunakan Accessors dan Mutators?
Mudah untuk sampai pada kesimpulan bahwa kita bisa mengubah bidang privat dari definisi kelas menjadi publik dan mencapai hasil yang sama. Penting untuk diingat bahwa kami ingin menyembunyikan data objek sebanyak mungkin. Ekstra penyangga disediakan oleh metode ini memungkinkan kita untuk:
- Ubah cara penanganan data di balik layar.
- Berikan validasi pada nilai yang diatur ke bidang.
Katakanlah kita memutuskan untuk memodifikasi cara kita menyimpan nama tengah. Alih-alih hanya satu String sekarang kita dapat menggunakan array dari Strings:
Implementasi di dalam objek telah berubah tetapi dunia luar tidak terpengaruh. Cara metodenya tetap sama persis:
Atau, katakanlah aplikasi yang menggunakan objek Person hanya dapat menerima nama pengguna yang memiliki maksimal sepuluh karakter. Kami dapat menambahkan validasi dalam mutator setUsername untuk memastikan nama pengguna sesuai dengan persyaratan ini:
Sekarang jika nama pengguna yang diteruskan ke setUsername mutator lebih panjang dari sepuluh karakter, maka secara otomatis akan terpotong.