Apa yang Menyembunyikan Data Dalam C++? Abstraksi dan Enkapsulasi Dijelaskan

Diterbitkan: 2021-05-24

Daftar isi

Pengantar Penyembunyian Data

Data adalah komponen program yang paling sensitif dan mudah menguap, yang jika dimanipulasi, dapat menghasilkan keluaran yang salah dan merusak integritas data. Di sinilah penyembunyian data terbukti penting. Dalam jargon teknis, penyembunyian data juga disebut sebagai penyembunyian informasi, adalah mekanisme pemrograman berorientasi objek (OOP) yang melekat untuk menyembunyikan detail objek internal dari pengguna akhir.

Tujuan yang mendasari penyembunyian data adalah untuk menyembunyikan data di dalam kelas dari akses yang tidak sah dan menghindari penetrasi yang tidak perlu dari luar kelas. Penyembunyian data menjamin akses data yang dibatasi untuk memastikan integritas objek dan mencegah perubahan yang tidak diinginkan atau dimaksudkan pada program yang bersangkutan.

Sederhananya, penyembunyian data mengambil bagian tertentu dari kode program dan menyaringnya dari anggota objek. Jika anggota objek mencoba mengakses data tersembunyi, program akan mengembalikan kesalahan. Ini adalah mekanisme peringatan yang diperkenalkan untuk memastikan bahwa programmer menjauhkan diri dari menghubungkan ke data yang salah yang telah disembunyikan. Seringkali komponen internal tanpa kebutuhan yang dapat diperkirakan sebelumnya di sisi pengguna yang disembunyikan.

Penyembunyian Data, Abstraksi Data, dan Enkapsulasi Data

Penyembunyian data di C++ berkorelasi erat dengan dua properti OOP lainnya - abstraksi dan enkapsulasi.

Abstraksi data

Abstraksi data adalah mekanisme untuk mengekspos hanya antarmuka program yang relevan kepada pengguna akhir dan menyembunyikan detail implementasi yang lebih rumit dan kompleks. Mari kita pertimbangkan contoh kehidupan nyata untuk pemahaman yang lebih baik. Pertimbangkan televisi Anda. Anda dapat menghidupkan dan mematikan televisi, mengubah saluran, menyesuaikan volumenya, dan menambahkan komponen eksternal seperti VCR, pemutar DVD, dan speaker. Tapi Anda tidak tahu mekanisme internal televisi.

Anda tidak menyadari bagaimana ia menerima sinyal, menerjemahkannya, dan akhirnya menampilkan output. Dengan demikian, televisi adalah contoh yang baik dari pemisahan antara implementasi internal dan pengaruh eksternal. Dengan abstraksi data, implementasi kelas dilindungi dari kesalahan yang tidak disengaja dan berkembang sebagai respons terhadap perubahan persyaratan atau laporan bug tanpa gangguan tingkat pengguna.

Enkapsulasi Data

Enkapsulasi data mengacu pada bundling data dan fungsi terkait ke dalam satu unit yang disebut kelas. Misalnya, jika Anda memiliki atribut tak terlihat dari luar objek dan menggabungkannya dengan metode yang menyediakan akses baca atau tulis ke objek tersebut, Anda dapat menyembunyikan informasi sensitif dan mengatur akses ke keadaan internal objek tersebut.

Oleh karena itu, bergantung pada metode yang Anda terapkan, Anda bertanggung jawab untuk memutuskan apakah suatu atribut dapat dibaca dan diubah atau apakah hanya-baca atau tidak terlihat sama sekali.

Perbedaan antara penyembunyian data dan enkapsulasi data

Dalam membahas OOP, penyembunyian data dan enkapsulasi data sering digunakan secara bergantian karena kedua pengertian ini bekerja sama untuk mencapai tujuan umum-bantu penjaga gerbang informasi sensitif. Ide enkapsulasi data tidak diragukan lagi secara fungsional komparatif dengan penyembunyian data, tetapi karena mereka bekerja pada level yang berbeda, mereka berbeda secara struktural.

Meskipun secara intrinsik terkait satu sama lain, ada perbedaan penting antara penyembunyian data dan enkapsulasi data.

  1. Perbedaan utama antara penyembunyian data dan enkapsulasi adalah bahwa yang pertama berfokus pada peningkatan keamanan data dalam program, sedangkan yang terakhir berkaitan dengan menyembunyikan kompleksitas program.
  2. Penyembunyian data berkonsentrasi pada aksesibilitas anggota objek di dalam kelas, sementara enkapsulasi data berfokus pada bagaimana data diakses dan bagaimana objek yang berbeda berperilaku. Enkapsulasi terutama dilakukan melalui penyembunyian informasi dan bukan hanya penyembunyian informasi. Ini berarti bahwa programmer menyembunyikan struktur anggota objek dan menyembunyikan implementasi semua metodenya.
  3. Sementara penyembunyian data berfokus pada pembatasan penggunaan data dalam program untuk memastikan keamanan data, enkapsulasi data berfokus pada pembungkusan (atau enkapsulasi) data kompleks untuk menyajikan tampilan yang lebih sederhana kepada pengguna.
  4. Dalam penyembunyian data, data harus didefinisikan sebagai pribadi saja. Dalam enkapsulasi data, data dapat bersifat publik atau pribadi.
  5. Penyembunyian data adalah proses dan teknik itu sendiri, sedangkan enkapsulasi data adalah sub-proses dalam penyembunyian data.

penentu akses

C++ mendukung penyembunyian data, dan dengan ekstensi, abstraksi data dan enkapsulasi data melalui pembuatan tipe yang ditentukan pengguna, yang dikenal sebagai kelas. Cakupan anggota kelas yang dibuat ini ditentukan oleh kata kunci yang dikenal sebagai penentu akses. Biasanya, ada tiga jenis proteksi atau penentu akses yang tersedia dalam kategori-privat, dilindungi dan publik, yang digunakan untuk membangun kemampuan enkapsulasi kelas.

Penentu akses membantu menentukan bagaimana variabel dan fungsi suatu tipe dapat diakses dari luar kelas. Biasanya, data dalam suatu kelas bersifat pribadi untuk menghilangkan contoh manipulasi yang tidak disengaja, dan operasinya bersifat publik. Namun, aksesibilitas dalam peringkat tidak terikat oleh batasan apa pun.

Variabel/fungsi pribadi: Hanya dapat diakses oleh anggota yang didefinisikan sebagai bagian dari kelas.

Variabel/fungsi publik: Dapat diakses dari mana saja dalam program.

Variabel/fungsi yang dilindungi Bersifat pribadi di dalam kelas dan hanya tersedia untuk akses jarak jauh di kelas turunan.

Aplikasi Penyembunyian Data

Untuk lebih memahami penyembunyian data, mari kita perhatikan contoh berikut. Mengingat Anda adalah programmer, mari kita asumsikan bahwa Anda mendeklarasikan kelas dengan nama 'CheckAccount', di mana Anda telah mendefinisikan anggota data dengan istilah 'Saldo', yang mengacu pada saldo rekening bank pengguna.

Dalam contoh khusus ini, 'Saldo' anggota data adalah informasi sensitif. Meskipun Anda mungkin menawarkan akses aplikasi luar untuk melihat informasi sensitif ini, kemungkinan besar, Anda tidak akan membiarkan aplikasi luar ini mengubah atribut data yang disimpan di Saldo anggota.' Hasil ini dapat dicapai dengan menggunakan penyembunyian data, dan lebih khusus lagi, dikendalikan oleh penggunaan penentu akses pribadi.

  1. Penyembunyian data biasanya dilakukan pada data yang tidak dapat diprediksi dan rumit. Data semacam ini sangat penting dalam menjalankan program secara efektif dan cepat. Karena akses yang tidak semestinya, data perubahan data yang dihasilkan bersifat permanen dan mengharuskan pengerjaan ulang lengkap di pihak programmer sebelum digunakan lebih lanjut.
  2. Penyembunyian data membantu melindungi anggota kelas dari pengabaian yang tidak disengaja. Kelas biasanya terdiri dari berbagai bidang terkait yang harus dalam keadaan andal. Misalkan seorang programmer diizinkan untuk mengontrol salah satu bidang ini secara langsung. Dalam hal ini, ada kemungkinan bahwa Anda dapat mengubah satu area tanpa mengubah bidang terkait yang penting, meninggalkan kelas Anda dalam keadaan berkonflik.

Manfaat Menyembunyikan Data

Manfaat penyembunyian data berlipat ganda:

  1. Ini digunakan untuk mengurangi ketidakpastian data dan kompleksitas data.
  2. Ini meningkatkan penggunaan kembali program.
  3. Dengan membatasi saling ketergantungan antara komponen perangkat lunak, juga mengurangi kompleksitas sistem untuk meningkatkan ketahanan.
  4. Menyembunyikan desain penimbunan fisik untuk data. Ini membantu dalam mendefinisikan antarmuka dengan jelas, meningkatkan keterbacaan dan pemahaman.
  5. Ini memberikan jaminan data dari korupsi dan akses yang tidak beralasan. Dengan kata lain, ini membantu menyembunyikan data penting, sehingga memastikan protokol keamanan yang lebih tinggi terhadap peretas. Jika semua data internal dipublikasikan, peretas dapat dengan mudah menembus data internal dan membuat perubahan yang dimaksudkan untuk mengubah fungsi program. Menyembunyikan data membuat lebih sulit untuk memecahkan kode karena data tersembunyi akan tampak tidak terlihat oleh anggota luar kelas dan, oleh karena itu, peretas.
  6. Kelas yang dienkapsulasi sangat mudah, mudah dikelola, dan memfasilitasi pengembangan aplikasi di masa mendatang.

Kerugian Menyembunyikan Data

Satu-satunya kelemahan dari penyembunyian data adalah pengkodean ekstra. Penyembunyian data mengharuskan pemrogram untuk menulis kode yang lebih panjang untuk menciptakan efek yang diinginkan dalam data tersembunyi.

Pelajari Kursus Rekayasa Perangkat Lunak online dari Universitas top dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Tingkat Lanjut, atau Program Magister untuk mempercepat karier Anda.

Kesimpulan

Penyembunyian data mirip dengan permainan Roulette Rusia. Di Roulette Rusia, hanya satu dari enam lubang yang memiliki peluru. Mari kita bayangkan tembakan itu adalah ancaman data yang dapat dilihat. Apakah Anda bersedia mengambil kesempatan? Mungkin ada lima skenario yang menguntungkan Anda, tetapi dapatkah Anda secara spesifik mengidentifikasi ancamannya? Jawabannya adalah tidak. Semua skenario menanggung beban kecurigaan dan ketakutan probabilistik yang sama. Alih-alih menyerah pada ketidakpastian ini, ambil sikap melawan ancaman data. Lakukan penyamaran dengan penyembunyian data.

Jika Anda tertarik untuk mempelajari lebih lanjut tentang Java, OOP & pengembangan perangkat lunak full-stack, lihat Program PG Eksekutif upGrad & IIIT-B dalam Pengembangan Perangkat Lunak Full-stack yang dirancang untuk profesional yang bekerja dan menawarkan 500+ jam pelatihan yang ketat, 9+ proyek, dan tugas, status Alumni IIIT-B, proyek batu penjuru praktis & bantuan pekerjaan dengan perusahaan-perusahaan top.

Apa itu enkapsulasi dalam pemrograman berorientasi objek?

Enkapsulasi adalah cara mengikat bersama data dan kode yang beroperasi pada data. Ini adalah mekanisme yang digunakan untuk menyembunyikan detail implementasi data sambil mengekspos abstraksi data ke dunia luar. Proses menyembunyikan informasi di balik antarmuka yang terdefinisi dengan baik dikenal sebagai enkapsulasi. Enkapsulasi adalah konsep yang kuat dari pemrograman berorientasi objek. Ini adalah proses menyembunyikan data internal dan operasi suatu objek dari dunia luar dengan membuat fungsi pengakses.

Apa itu abstraksi dalam pemrograman berorientasi objek?

Abstraksi adalah teknik yang digunakan dalam Pemrograman Berorientasi Objek untuk memisahkan antarmuka kelas dari detail implementasi setiap objek individu. Ini berarti bahwa kode dapat diubah tanpa mengubah kode yang menggunakan kelas. Dalam pemrograman berorientasi objek (OOP), abstraksi mewakili objek yang dapat dimanipulasi, tetapi tidak didefinisikan secara eksplisit. Abstraksi adalah bagian penting dari OOP; itu adalah proses memisahkan antarmuka kelas dari implementasi metodenya.

Bagaimana kelas dan objek berinteraksi dalam pemrograman berorientasi objek?

Kelas dan objek adalah dasar dari pemrograman berorientasi objek (OO). Pemrograman berorientasi objek adalah paradigma pemrograman, yang menggunakan objek dan kelas untuk memodelkan dunia nyata. Kelas adalah cetak biru atau template. Ini adalah deskripsi atau spesifikasi tentang apa yang seharusnya menjadi objek. Ini mendefinisikan karakteristik, perilaku dan data dari jenis objek tertentu. Objek adalah instance atau contoh dari sebuah kelas. Setiap objek dalam suatu program dapat diklasifikasikan ke dalam satu atau lebih kelas. Sebuah kelas dapat mewarisi properti, metode, dan karakteristik lain dari kelas lain. Inilah yang disebut sebagai warisan.