Perbezaan antara abstraksi dan enkapsulasi

Perbezaan antara abstraksi dan enkapsulasi

Abstraksi dan enkapsulasi kedua-duanya adalah konsep pengaturcaraan berorientasikan objek asas (OOP) yang membolehkan anda melaksanakan objek dunia nyata ke dalam program dan kod. Walaupun kedua -duanya berjalan lancar, mereka sangat berbeza antara satu sama lain. Walaupun setiap kaedah adalah enkapsulasi, ia juga merupakan abstraksi. Secara ringkas, apabila anda meletakkan perkara yang berbeza bersama -sama untuk membuat entiti, anda sebenarnya membuat konsep - abstrak. Walaupun kedua -duanya secara teknikal tidak dapat dipisahkan, mereka tidak mendapat persamaan. Hampir benar bahawa setiap enkapsulasi adalah abstraksi kerana mereka berdua menyembunyikan sesuatu, bagaimanapun, mereka mempunyai bahagian yang saksama dari perbezaan.

Apa itu abstraksi?

Abstraksi adalah konsep OOP asas yang memberi tumpuan kepada hanya data yang relevan objek dan menyembunyikan semua butiran yang tidak relevan yang mungkin atau mungkin bukan untuk tingkah laku generik atau khusus. Ia menyembunyikan butiran latar belakang dan menekankan pada titik -titik penting untuk mengurangkan kerumitan dan meningkatkan kecekapan. Pada asasnya, Abstraksi adalah alat pengaturcaraan untuk menguruskan kerumitan. Abstraksi memberi tumpuan kepada idea dan bukannya peristiwa. Ia menyembunyikan butiran mengenai tahap reka bentuk dengan menyediakan fungsi kepada pengguna. Objek yang dihasilkan juga boleh dipanggil abstraksi. Pengaturcara memastikan entiti yang dinamakan akan mempunyai semua aspek penting yang disertakan dan tidak ada yang tidak relevan.

Mari ambil contoh abstraksi dunia nyata. Mari kita pertimbangkan kes kenderaan, yang dalam kes ini adalah kenderaan anda. Seorang mekanik cuba membaiki kereta anda atau katakan bahagian tertentu kereta anda. Di sini, anda adalah pengguna dan anda tidak mahu masuk ke dalam spesifik kereta anda atau bahagian yang sebenarnya rosak. Anda sebenarnya tidak peduli dengan perkara -perkara itu; anda hanya mahu kenderaan anda kembali dalam keadaan asalnya tanpa bimbang tentang perinciannya. Oleh itu, anda sebenarnya memberitahu mekanik apa yang anda mahukan dengan memisahkan bahagian pelaksanaan. Ini adalah abstraksi. Anda memberi tumpuan kepada perkara yang paling penting, yang memperbaiki kereta anda, dan bukannya memberi tumpuan kepada spesifik.

Apa itu enkapsulasi?

Encapsulation adalah satu lagi konsep OOP yang mengikat data dan berfungsi menjadi satu komponen sambil menyekat akses kepada beberapa komponen. Ini adalah salah satu konsep asas utama OOP yang membungkus data dan maklumat di bawah satu unit. Dalam istilah teknikal, enkapsulasi bermaksud menyembunyikan atribut untuk melindungi pembolehubah dari akses luar supaya perubahan dalam satu bahagian aplikasi tidak akan menjejaskan bahagian lain. Sebaliknya, dengan membuat maklumat lebih terbuka, anda akan mengambil risiko penyalahgunaan data. Ia memberikan integriti asas kepada data dengan melindunginya dari dunia luar. Secara ringkas, ia menyembunyikan butiran tambahan dari dunia luar.

Mari ambil contoh tetikus Bluetooth. Anda hanya perlu tahu mengenai tingkah laku peranti tanpa bimbang tentang butiran pelaksanaan seperti jenis sensor tetikus, adakah ia tanpa wayar atau tidak, dll. Setiap perincian menerangkan tetikus tetapi tanpa mengira butirannya, itu hanya tetikus. Anda hanya memerlukan antara muka untuk menggunakan tetikus, yang dalam kes ini adalah penunjuk tetikus. Ini adalah enkapsulasi.

Perbezaan antara abstraksi dan enkapsulasi

Walaupun kedua -duanya adalah konsep asas yang berkaitan dengan OOP dan mereka secara teknikal tidak dapat dipisahkan, mereka masih mempunyai perbezaan dalam banyak aspek.

  1. Perbezaan dalam "definisi" abstraksi dan enkapsulasi - Abstraksi adalah konsep OOP asas yang menekankan pada semua aspek penting objek dengan menyembunyikan butiran yang tidak relevan untuk meningkatkan kecekapan dan menghapuskan kerumitan. Encapsulation, sebaliknya, adalah mekanisme menyembunyikan data yang membungkus data dan maklumat dalam kapsul untuk menyekat akses dari dunia luar.
  2. Perbezaan dalam "Fungsi" abstraksi dan enkapsulasi- Abstraksi adalah mekanisme menyembunyikan data yang hanya menyoroti ciri -ciri penting untuk menjadikan program kompleks lebih mudah, sementara enkapsulasi, sebaliknya, adalah kaedah mengikat data dan kod ke dalam entiti tunggal. Ideanya adalah untuk melindungi butiran pelaksanaan dari akses luaran.
  3. Perbezaan dalam "pelaksanaan" abstraksi dan enkapsulasi - Abstraksi dilaksanakan menggunakan kelas abstrak dan antara muka, sementara enkapsulasi dilaksanakan menggunakan pengubah akses. Lima jenis pengubah digunakan untuk merangkum data: swasta, awam, dalaman, dilindungi, dan dilindungi dalaman.
  4. Perbezaan dalam "Konsep" abstraksi dan enkapsulasi- Idea di sebalik abstraksi adalah untuk memberi tumpuan kepada apa yang bukannya bagaimana. Enkapsulasi menyembunyikan mekanik dalaman bagaimana. Contohnya, apabila anda memandu kereta, anda tahu dengan tepat apa pedal brek tetapi anda mungkin tidak tahu keseluruhan mekanisme di belakangnya kerana data itu dikemas kini.
  5. Perbezaan dalam "contoh" abstraksi dan enkapsulasi - Mari ambil contoh telefon pintar. Anda tahu apa yang berlaku tetapi anda mungkin tidak tahu bagaimana ia melakukan apa yang dilakukannya. Anda hanya mengambil berat tentang butang skrin paparan dan papan kekunci dan bukannya membimbangkan litar dalamannya. Di sini, telefon pintar adalah abstrak di mana butiran pelaksanaan dalaman terkandung.

Abstraksi vs. Enkapsulasi dengan jadual perbandingan

Abstraksi Enkapsulasi
Ia hanya berkaitan dengan butiran yang relevan dengan menyembunyikan yang tidak relevan untuk mengurangkan kerumitan sehingga meningkatkan kecekapan. Ia mengikat data dan maklumat bersama -sama ke dalam entiti tunggal untuk melindungi data dari sumber luaran.
Ia merujuk kepada idea menyembunyikan data yang tidak diperlukan untuk tujuan persembahan. Ia menyembunyikan data dan kod untuk menyekat akses yang tidak diingini.
Ia memberi tumpuan kepada apa yang bukannya bagaimana. Ia menyembunyikan mekanik dalaman bagaimana ia melakukan sesuatu.
Ia menyembunyikan butiran yang tidak perlu di peringkat reka bentuk. Ia juga menyembunyikan butiran tetapi di peringkat pelaksanaan.
Maklumat dan data dipisahkan dari data yang berkaitan. Maklumat tersembunyi di dalam kapsul untuk akses dekat.
Ia menangani idea dan bukannya peristiwa. Ideanya adalah untuk melindungi data dari dunia luar.
Ia dilaksanakan menggunakan kelas dan antara muka abstrak. Ia dilaksanakan menggunakan pengubah akses yang dilindungi, swasta, dan pakej.

Ringkasan

Walaupun kedua -duanya adalah konsep OOP yang berkaitan dengan menyembunyikan data, mereka agak berbeza antara satu sama lain. Abstraksi juga berkaitan dengan bersembunyi seperti enkapsulasi, tetapi sementara bekas menyembunyikan kerumitan, yang terakhir menyimpan data yang dimasukkan dengan mengendalikan akses kepada mereka. Abstraksi merujuk kepada konsep mewakili hanya ciri -ciri yang diperlukan dengan menyembunyikan butiran yang tidak relevan untuk mengurangkan kerumitan aplikasi dengan itu meningkatkan kecekapan. Enkapsulasi, sebaliknya, merujuk kepada konsep menyembunyikan semua mekanik dalaman program untuk melindungi maklumat dari akses yang tidak diingini. Ia mengikat data dan maklumat bersama -sama ke dalam satu komponen dengan menyekat akses kepada komponen lain.