Bisakah Anda memberi tahu saya apa perbedaan antara abstraksi dan menyembunyikan informasi dalam pengembangan perangkat lunak?
Saya bingung. Abstraksi menyembunyikan implementasi detail dan menyembunyikan informasi abstrak seluruh detail sesuatu.
Pembaruan: Saya menemukan jawaban yang bagus untuk ketiga konsep ini. Lihat jawaban terpisah di bawah ini untuk beberapa kutipan yang diambil dari sana .
Jawaban:
Pergi ke sumbernya! Grady Booch berkata (dalam Analisis dan Desain Berorientasi Objek, halaman 49, edisi kedua):
Dengan kata lain: abstraksi = objek secara eksternal; enkapsulasi (dicapai melalui penyembunyian informasi) = objek secara internal,
Contoh: Dalam .NET Framework,
System.Text.StringBuilder
kelas menyediakan abstraksi atas penyangga string. Abstraksi buffer ini memungkinkan Anda bekerja dengan buffer tanpa memperhatikan implementasinya. Dengan demikian, Anda dapat menambahkan string ke buffer tanpa memperhatikan bagaimanaStringBuilder
internal melacak hal-hal seperti pointer ke buffer dan mengelola memori ketika buffer penuh (yang dilakukan dengan enkapsulasi melalui penyembunyian informasi).rp
sumber
OP memperbarui pertanyaannya dengan beberapa kutipan yang ia temukan, yaitu dalam sebuah artikel oleh Edward V. Berard berjudul, "Abstraksi, Enkapsulasi, dan Menyembunyikan Informasi" . Saya memposting ulang versi pembaruan OP yang sedikit diperluas dan diformat ulang, karena itu harusnya menjadi jawaban sendiri.
(Semua kutipan diambil dari artikel yang disebutkan di atas.)
Abstraksi:
Menyembunyikan Informasi:
Enkapsulasi:
Kesimpulan:
sumber
Information Hiding
(atau implementasi menyembunyikan), sedangkan generikclass
mencapai enkapsulasi dan abstraksi dicapai melaluiprivate
aksesAbstraction
menyembunyikan detail implementasi dengan menyediakan lapisan atas fungsionalitas dasar.Information Hiding
menyembunyikan data yang terpengaruh oleh implementasi itu. Penggunaanprivate
danpublic
berada di bawah ini. Misalnya, menyembunyikan variabel kelas.Encapsulation
hanya memasukkan semua data dan fungsi yang serupa ke dalam grup misalnyaClass
dalam pemrograman;Packet
dalam jaringan.Melalui penggunaan Kelas, kami menerapkan ketiga konsep -
Abstraction
,Information Hiding
danEncapsulation
sumber
Tolong jangan menyulitkan konsep sederhana.
Enkapsulasi : Membungkus data dan metode menjadi satu unit adalah Enkapsulasi (mis. Kelas)
Abstraksi : Ini adalah tindakan yang hanya mewakili hal-hal penting tanpa menyertakan detail latar belakang. (mis. Antarmuka)
UNTUK CONTOH DAN INFO LEBIH BANYAK GOTO:
http://thecodekey.com/C_VB_Codes/Encapsulation.aspx
http://thecodekey.com/C_VB_Codes/Abstraction.aspx
Definisi yang disetujui di sini
PS: Saya juga ingat definisi dari buku bernama C ++ karya Sumita Arora yang kita baca di kelas 11;)
sumber
Arti abstraksi yang diberikan oleh Oxford English Dictionary (OED) yang paling dekat dengan makna yang dimaksudkan di sini adalah 'Tindakan berpisah dalam pikiran'. Definisi yang lebih baik mungkin 'Mewakili fitur-fitur penting dari sesuatu tanpa menyertakan latar belakang atau detail yang tidak penting.'
Penyembunyian informasi adalah prinsip bahwa pengguna komponen perangkat lunak (seperti kelas) hanya perlu mengetahui rincian penting tentang cara menginisialisasi dan mengakses komponen, dan tidak perlu mengetahui detail implementasi.
Sunting : Menurut saya, abstraksi adalah proses memutuskan bagian mana dari implementasi yang harus disembunyikan .
Jadi itu bukan abstraksi informasi VERSUS bersembunyi. Ini informasi yang menyembunyikan abstraksi VIA.
sumber
Abstraksi
Abstraksi adalah tindakan merepresentasikan detail essentail tanpa menyertakan detail latar belakang. Kelas abstrak hanya memiliki tanda tangan metode dan kelas implementasi dapat memiliki implementasinya sendiri, dengan cara ini detail kompleks akan disembunyikan dari pengguna. Abstraksi berfokus pada tampilan luar. Dengan kata lain, Abstraksi adalah pemisahan antarmuka dari implementasi aktual.
Enkapsulasi
Enkapsulasi menjelaskan pengikatan anggota dan metode data ke dalam satu unit. Penyembunyian informasi adalah tujuan utama enkapsulasi. Enkapsulasi dilakukan dengan menggunakan penentu akses seperti pribadi, publik, dilindungi. Variabel anggota kelas dibuat pribadi sehingga mereka tidak dapat diakses langsung ke dunia luar. Enkapsulasi berfokus pada pandangan batin. Dengan kata lain, Enkapsulasi adalah teknik yang digunakan untuk melindungi informasi dalam suatu objek dari objek lain.
sumber
Abstraksi menyembunyikan detail implementasi seperti yang Anda katakan.
Anda mengabstraksikan sesuatu ke titik yang cukup tinggi sehingga Anda hanya perlu melakukan sesuatu yang sangat sederhana untuk melakukan suatu tindakan.
Penyembunyian informasi menyembunyikan detail implementasi. Pemrogramannya sulit. Anda dapat memiliki banyak hal untuk ditangani dan ditangani. Mungkin ada variabel yang ingin / perlu Anda jaga. Menyembunyikan informasi memastikan bahwa tidak ada yang secara tidak sengaja merusak sesuatu dengan menggunakan variabel atau metode yang Anda publikasikan.
Kedua konsep ini sangat terkait erat dalam pemrograman berorientasi objek.
sumber
Abstraksi - Ini adalah proses mengidentifikasi karakteristik penting dari suatu objek tanpa menyertakan rincian yang tidak relevan dan membosankan.
Enkapsulasi - Ini adalah proses melampirkan data dan fungsi memanipulasi data ini menjadi satu unit.
Abstraksi dan Enkapsulasi adalah konsep yang terkait tetapi saling melengkapi.
Abstraksi adalah prosesnya. Enkapsulasi adalah mekanisme dimana Abstraksi diimplementasikan.
Abstraksi berfokus pada perilaku objek yang dapat diamati. Enkapsulasi berfokus pada implementasi yang memunculkan perilaku ini.
Menyembunyikan Informasi - Ini adalah proses menyembunyikan detail implementasi suatu objek. Ini adalah hasil Enkapsulasi.
sumber
Enkapsulasi: mengikat anggota data dan fungsi anggota bersama disebut enkapsulasi. enkapsulasi dilakukan melalui kelas. abstraksi: menyembunyikan detail implementasi dari penggunaan atau dari tampilan disebut abstraksi. mis .: int x; kita tidak tahu bagaimana int akan bekerja secara internal. tapi kita tahu int akan berhasil. itu adalah abstraksi.
sumber
Abstraksi: Abstraksi adalah konsep / teknik yang digunakan untuk mengidentifikasi apa yang seharusnya menjadi pandangan eksternal suatu objek. Hanya membuat antarmuka yang diperlukan tersedia.
Menyembunyikan Informasi: Ini adalah pelengkap Abstraksi, karena melalui penyembunyian informasi Abstraksi tercapai. Menyembunyikan segala sesuatu selain tampilan eksternal.
Enkapsulasi: Apakah pengikatan data dan fungsi terkait menjadi satu unit. Ini memfasilitasi Abstraksi dan menyembunyikan informasi. Mengizinkan fitur seperti akses anggota diterapkan pada unit untuk mencapai Penyembunyian Abstraksi dan Informasi
sumber
Lihat posting Joel tentang Hukum Abstraksi Leaky
JoelOnsoftware
Pada dasarnya, abstrak memberi Anda kebebasan untuk memikirkan konsep tingkat yang lebih tinggi. Analogi non-pemrograman adalah bahwa kebanyakan dari kita tidak tahu dari mana makanan kita berasal, atau bagaimana makanan itu diproduksi, tetapi kenyataan bahwa kita (biasanya) tidak perlu khawatir tentang hal itu membebaskan kita untuk melakukan hal-hal lain, seperti pemrograman.
Adapun menyembunyikan informasi, saya setuju dengan kemacetan.
sumber
Singkatnya
Enkapsulasi : - Menyembunyikan informasi
Abstraksi : - Implementasi persembunyian
Abstraction
memungkinkan Anda fokuswhat the object does
sementara Enkapsulasi berartihow an object works
sumber
Abstraksi memungkinkan Anda untuk memperlakukan proses yang rumit sebagai proses yang sederhana. Sebagai contoh, abstraksi "file" standar memperlakukan file sebagai array byte yang berdekatan. Pengguna / pengembang bahkan tidak perlu memikirkan masalah cluster dan fragmentasi. (Abstraksi biasanya muncul sebagai kelas atau subrutin.)
Penyembunyian informasi adalah tentang melindungi abstraksi Anda dari pengguna jahat / tidak kompeten. Dengan membatasi kontrol beberapa negara (alokasi hard drive, misalnya) ke pengembang asli, penanganan kesalahan dalam jumlah besar menjadi mubazir. Jika tidak ada orang lain selain driver sistem file yang dapat menulis ke hard drive, maka driver sistem file tahu persis apa yang telah ditulis ke hard drive dan di mana. (Manifestasi biasa dari konsep ini adalah
private
danprotected
kata kunci dalam bahasa OO.)sumber
Untuk mengabstraksikan sesuatu, kita perlu menyembunyikan detailnya atau menyembunyikan detail dari sesuatu yang perlu kita abstraksi. Namun, keduanya bisa dicapai dengan enkapsulasi.
Jadi, menyembunyikan informasi adalah tujuan, abstraksi adalah proses, dan enkapsulasi adalah teknik.
sumber
Abstraksi berarti teknik di mana hanya rincian penting dari perangkat lunak yang dibuat terlihat oleh pengguna untuk membantu pengguna untuk menggunakan atau mengoperasikan dengan perangkat lunak, sehingga rincian implementasi perangkat lunak tersebut tidak ditampilkan (dibuat tidak terlihat). Enkapsulasi adalah teknik yang memiliki paket yang menampung satu atau lebih item dan karenanya beberapa informasi (terutama detail program) menjadi terlihat dan beberapa tidak terlihat oleh pengguna, sehingga enkapsulasi dicapai melalui penyembunyian informasi. Singkatnya. Abstraksi adalah untuk perilaku yang dapat diamati (eksternal) dan enkapsulasi adalah untuk tembus pandang (internal) tetapi keduanya benar-benar saling melengkapi.
sumber
Hanya menambahkan rincian lebih lanjut di sekitar InformationHiding , ditemukan Tautan ini adalah sumber yang sangat bagus dengan contoh
sumber
Abstraksi dan Enkapsulasi adalah dua dari empat konsep OOP dasar yang memungkinkan Anda untuk memodelkan hal-hal dunia nyata menjadi objek sehingga Anda dapat mengimplementasikannya dalam program dan kode Anda. Banyak pemula bingung antara Abstraksi dan Enkapsulasi karena mereka berdua terlihat sangat mirip. Jika Anda bertanya kepada seseorang apa itu Abstraksi, ia akan mengatakan bahwa itu adalah konsep OOP yang berfokus pada informasi yang relevan dengan menyembunyikan detail yang tidak perlu, dan ketika Anda bertanya tentang Enkapsulasi, banyak yang akan mengatakan bahwa itu adalah konsep OOP lain yang menyembunyikan data dari dunia luar. Definisi ini tidak salah karena Abstraksi dan Enkapsulasi memang menyembunyikan sesuatu, tetapi perbedaan utamanya adalah pada niat.
Abstraksi menyembunyikan kerumitan dengan memberikan Anda gambar yang lebih abstrak, semacam tampilan 10.000 kaki, sementara Enkapsulasi menyembunyikan kerja internal sehingga Anda dapat mengubahnya nanti. Dengan kata lain, Abstraksi menyembunyikan detail pada level desain, sementara Enkapsulasi menyembunyikan detail di level implementasi.
sumber
Setelah membaca semua jawaban di atas satu per satu saya tidak bisa berhenti memposting itu
Enkapsulasi cukup jelas dari atas ->
referensi wiki
sumber
Saya juga sangat bingung tentang dua konsep Abstraksi dan Enkapsulasi. Tetapi ketika saya melihat artikel abstraksi di myjavatrainer.com, menjadi jelas bagi saya bahwa Abstraksi dan Enkapsulasi adalah Apel dan Jeruk, Anda tidak dapat benar-benar membandingkannya karena keduanya diperlukan.
Enkapsulasi adalah bagaimana objek dibuat, dan abstraksi adalah bagaimana objek dilihat di dunia luar.
sumber
Enkapsulasi: mengikat data dan metode yang menanganinya. ini memungkinkan penyembunyian data dari semua metode lain di kelas lain. Contoh:
MyList
kelas yang dapat menambahkan item, menghapus item, dan menghapus semua item metodeadd
,remove
danremoveAll
bertindak atas daftar (array swasta) yang tidak dapat diakses langsung dari luar.Abstraksi: menyembunyikan perilaku dan data yang tidak relevan. Bagaimana item sebenarnya disimpan, ditambahkan, atau dihapus disembunyikan (disarikan). Data saya dapat disimpan dalam array sederhana, ArrayList, LinkedList, dan sebagainya. Juga, bagaimana metode diimplementasikan tersembunyi dari luar.
sumber
Enkapsulasi - menegakkan akses ke data internal secara terkendali atau mencegah anggota diakses secara langsung.
Abstraksi - Menyembunyikan detail implementasi metode tertentu dikenal sebagai abstraksi
Mari kita pahami dengan bantuan contoh: -
Sekarang untuk abstraksi, tentukan metode yang hanya dapat diakses dan pengguna tidak tahu apa isi dari metode tersebut dan bagaimana cara kerjanya. Mari kita perhatikan contoh di atas, kita dapat mendefinisikan area metode yang menghitung luas persegi panjang.
Sekarang, setiap kali pengguna menggunakan metode di atas dia hanya akan mendapatkan area bukan dengan cara bagaimana itu dihitung. Kita dapat mempertimbangkan contoh metode println () yang baru kita ketahui digunakan untuk mencetak dan kita tidak tahu bagaimana cara mencetak data. Saya telah menulis blog secara rinci, Anda dapat melihat tautan di bawah ini untuk info lebih lanjut abstraksi vs enkapsulasi
sumber
Perlu dicatat bahwa istilah-istilah ini memiliki standar, definisi IEEE, yang dapat dicari di https://pascal.computer.org/ .
abstraksi
menyembunyikan informasi
enkapsulasi
sumber