Pengkapsulan data C++
Semua program C++ mempunyai dua elemen asas berikut:
Pernyataan program (kod): Ini adalah bahagian program yang melaksanakan action , ia dipanggil fungsi.
Data program: Data ialah maklumat program dan akan dipengaruhi oleh fungsi program.
Encapsulation ialah konsep dalam pengaturcaraan berorientasikan objek yang mengikat data dan fungsi yang beroperasi pada data bersama-sama Ini boleh mengelakkan gangguan dan penyalahgunaan dari dunia luar, dengan itu memastikan keselamatan. Enkapsulasi data membawa kepada satu lagi konsep OOP yang penting, iaitu penyorok data.
Pengenkapsulan data ialah mekanisme yang menggabungkan data dan fungsi untuk mengendalikan data Pengabstrakan data ialah kaedah yang hanya mendedahkan antara muka kepada pengguna dan meletakkan A tertentu. mekanisme di mana butiran pelaksanaan disembunyikan.
C++ menyokong enkapsulasi dan penyembunyian data (awam, dilindungi, peribadi) dengan mencipta kelas. Kita sudah tahu bahawa kelas mengandungi ahli persendirian, dilindungi dan awam. Secara lalai, semua item yang ditakrifkan dalam kelas adalah peribadi. Contohnya:
class Box { public: double getVolume(void) { return length * breadth * height; } private: double length; // 长度 double breadth; // 宽度 double height; // 高度 };
Pembolehubah panjang, lebar dan tinggi semuanya tertutup. Ini bermakna bahawa mereka hanya boleh diakses oleh ahli lain dalam kelas Box dan bukan oleh bahagian lain program. Ini adalah salah satu cara untuk mencapai enkapsulasi.
Untuk menjadikan ahli kelas awam (iaitu, boleh diakses oleh bahagian lain program), mereka mesti diisytiharkan menggunakan kata kunci awam sebelum ahli ini. Semua pembolehubah atau fungsi yang ditakrifkan selepas pengecam awam boleh diakses oleh semua fungsi lain dalam program.
Mentakrifkan satu kelas sebagai kelas rakan kelas lain akan mendedahkan butiran pelaksanaan, sekali gus mengurangkan enkapsulasi. Pendekatan yang ideal adalah untuk menyembunyikan butiran pelaksanaan setiap kelas dari luar sebanyak mungkin.
Instance pengkapsulan data
Dalam program C++, mana-mana kelas dengan ahli awam dan persendirian boleh digunakan sebagai contoh pengkapsulan data dan abstraksi data. Lihat contoh berikut:
#include <iostream> using namespace std; class Adder{ public: // 构造函数 Adder(int i = 0) { total = i; } // 对外的接口 void addNum(int number) { total += number; } // 对外的接口 int getTotal() { return total; }; private: // 对外隐藏的数据 int total; }; int main( ) { Adder a; a.addNum(10); a.addNum(20); a.addNum(30); cout << "Total " << a.getTotal() <<endl; return 0; }
Apabila kod di atas disusun dan dilaksanakan, ia menghasilkan keputusan berikut:
Total 60
Kelas di atas menambah nombor dan mengembalikan jumlahnya. Ahli awam addNum dan getTotal ialah antara muka luaran dan pengguna perlu mengenali mereka untuk menggunakan kelas. Ahli persendirian jumlah disembunyikan dari dunia luar dan pengguna tidak perlu mengetahui tentangnya, tetapi kelas itu perlu berfungsi dengan baik.
Strategi Reka Bentuk
Biasanya, kami akan menetapkan status ahli kelas kepada peribadi melainkan kami benar-benar perlu mendedahkannya, untuk memastikan enkapsulasi yang baik.
Ini biasanya terpakai kepada ahli data, tetapi ia terpakai sama rata kepada semua ahli, termasuk fungsi maya.