Skip to main content

Penyembunyian Data dalam Encapsulasi

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:
  1. Akses read-only dapat disediakan, dengan memiliki metode getter tetapi tidak ada metode setter.
  2. Constraints dapat dimasukkan dalam setter. Misalnya, jika nilai data harus dibatasi pada rentang tertentu, setter dapat menerapkannya.
  3. Implementasi aktual dari data member dapat diubah tanpa mempengaruhi klien jika getter dan setter adalah satu-satunya akses.

Comments

Popular posts from this blog

Pengertian Binding dalam Bahasa Pemrograman dan Kapan Terjadinya

Binding dimaksudkan sebagai pengikatan (association) antara suatu entity dengan atributnya, misalnya binding/pengikatan antara suatu variable dengan tipe datanya atau dengan nilainya, atau dapat juga antara suatu operasi dengan simbol, misalnya simbol + dikenali sebagai operasi penjumlahan atau simbol ^ dikenali sebagai operasi pangkat, dll.  Peristiwa binding dan kapan terjadinya binding (biasanya disebut dengan binding time ) berperan penting dalam membicarakan semantics suatu bahasa pemrograman. Beberapa kemungkinan binding time adalah:

Latihan Soal Jawab Matematika Diskrit

Berikut di bawah ini adalah latihan soal jawab untuk matematika diskrit dengan topik-topik: Pernyataan Logika Circuits dan Ekspresi Boolean Argumen (valid/tidak valid) Teori Himpunan Permutasi Fungsi --o0o-- Pernyataan Logika 1. Buatlah tabel kebenaran untuk menentukan yang mana tautology dan yang mana contradiction dalam pernyataan logika (a) dan (b) di bawah ini: a. (p ∧ q) ∨ (∼p ∨ (p ∧ ∼q)) b.  (p ∧ ∼q) ∧ (∼p ∨ q)

Contoh proses normalisasi relasi dari UNF – 1NF – 2NF – dan 3NF

Dalam posting tulisan tentang: “Tujuan dan Manfaat Normalisasi dalam Perancangan Database” , kita sudah mempelajari tentang: “Apa itu normalisasi” dan “Mengapa kita perlu melakukan normalisasi”. Kedua pertanyaan itu sudah terjawab dalam tulisan tersebut.  Kemudian dalam posting tulisan tentang: “Konsep Ketergantungan Fungsional, Normalisasi, dan Identifikasi Primary Key dalam Perancangan Sistem Database” , kita sudah mempelajari suatu konsep penting yang digunakan untuk melakukan normalisasi, yaitu konsep ketergantungan fungsional yang terdiri dari ketergantungan penuh, ketergantungan parsial atau sebagian, dan ketergantungan transitif. Proses normalisasi pertama-tama dilakukan dengan mengidentifikasi adanya ketergantungan-ketergantungan tersebut dalam relasi-relasi dan kemudian menghilangkannya. Cara melakukan normalisasi, mengidentifikasi berbagai macam ketergantungan, dan menghilangkan ketergantungan pada relasi-relasi bisa dipelajari ulang dalam postingan tulisan di at