Penyembunyian Data
Penyembunyian Data (Information Hiding) dalam Encapsulasi secara umum menggunakan klausa Private, Protected, Public (dan ada beberapa tanpa klausa sebagai default). Umumnya klausa tersebut berlaku sebagai berikut:
- Private: digunakan untuk entititas yang tersembunyi dari unit manapun kecuali dari class itu sendiri.
- Public: bisa diakses olehclass lain manapun.
- Protected: bisa diakses oleh class sendiri beserta turunannya.
- Beberapa bahasa pemrograman menggunakan tanpa klausa sebagai default: bisa diakses oleh class lain dalam satu package yang sama
Contoh:
class User {private String username;}
private String password;// ini method setter
public void setUsername(String username){
this.username = username;
}public void setPassword(String password){
this.password = password;
}// ini method getter
public String getUsername(){
return this.username;
}public String getPassword(){
return this.password;
}
Beberapa manfaat menyembunyikan informasi.
Salah satunya adalah peningkatan keandalan. Unit program yang menggunakan tipe data abstrak tertentu dipanggil klien tipe tersebut. Klien tidak dapat memanipulasi representasi objek yang mendasarinya secara langsung, baik secara sengaja atau tidak sengaja, sehingga meningkatkan integritas objek tersebut. Objek hanya dapat diubah melalui operasi yang disediakan.
Manfaat lain dari menyembunyikan informasi adalah mengurangi rentang kode dan jumlah variabel yang harus disadari oleh seorang programmer ketika menulis atau membaca bagian dari program. Nilai variabel tertentu hanya dapat diubah oleh kode dalam rentang terbatas, membuat kode lebih mudah dipahami dan kurang menantang untuk menemukan sumber perubahan yang salah.
Penyembunyian informasi juga membuat konflik nama lebih kecil kemungkinannya untuk terjadi, karena ruang lingkup variabel lebih kecil.
Akhirnya, pertimbangkan keuntungan menyembunyikan informasi berikut: Misalkan implementasi asli dari abstraksi stack menggunakan representasi linked list. Di lain waktu, karena masalah manajemen memori dengan representasi itu, abstraksi stack diubah untuk menggunakan representasi yang berdampingan (representasi yang mengimplementasikan stackdalam array). Karena abstraksi data digunakan, perubahan ini dapat dibuat dalam kode yang mendefinisikan tipe stack, tetapi tidak ada perubahan yang diperlukan dalam klien abstraksi stack. Secara khusus, kode contoh tidak perlu diubah. Tentu saja, perubahan protokol dari salah satu operasi akan membutuhkan perubahan pada klien.
Meskipun definisi tipe data abstrak menetapkan bahwa anggota objek data harus disembunyikan dari klien, banyak situasi muncul di mana klien perlu mengakses anggota data ini. Solusi umum adalah menyediakan metode aksesor, kadang-kadang disebut getter dan setter, yang memungkinkan klien akses tidak langsung ke data tersembunyi yang disebut - solusi yang lebih baik daripada hanya membuat data publik, yang akan memberikan akses langsung. Ada tiga alasan mengapa aksesor lebih baik:
- Akses read-only dapat disediakan, dengan memiliki metode getter tetapi tidak ada metode setter.
- Constraints dapat dimasukkan dalam setter. Misalnya, jika nilai data harus dibatasi pada rentang tertentu, setter dapat menerapkannya.
- Implementasi aktual dari data member dapat diubah tanpa mempengaruhi klien jika getter dan setter adalah satu-satunya akses.
Comments
Post a Comment