Latest web development tutorials

C ++ enkapsulasi Data

Semua C ++ program memiliki dua elemen dasar:

  • Laporan Program (code): Ini adalah bagian dari program untuk melakukan suatu tindakan, mereka disebut fungsi.
  • Program Data: Data informasi program, fungsi program akan terpengaruh.

Encapsulation adalah konsep pemrograman berorientasi obyek dalam data fungsi dan memanipulasi data terikat bersama-sama, sehingga untuk menghindari gangguan luar dan penyalahgunaan, sehingga memastikan keselamatan. Data enkapsulasi keluar dari konsep OOP lain yang penting, yaitu,bersembunyi data.

Data enkapsulasi adalah mekanisme berfungsi data dan memanipulasi data dibundel abstraksi datahanya satu terkena antarmuka pengguna dan rincian pelaksanaan mekanisme tersembunyi.

Dengan menciptakan C ++ dukungankelas enkapsulasi dan data bersembunyi (public, protected, swasta).Kita sudah tahu bahwa kelas berisi anggota pribadi (swasta), untuk melindungi anggota (dilindungi) dan anggota masyarakat anggota (publik). Secara default, semua item yang didefinisikan di kelas pribadi. Sebagai contoh:

class Box
{
   public:
      double getVolume(void)
      {
         return length * breadth * height;
      }
   private:
      double length;      // 长度
      double breadth;     // 宽度
      double height;      // 高度
};

panjang variabel, luas dan tinggi swasta (private). Ini berarti bahwa mereka hanya dapat diakses oleh anggota lain dari kelas Box, Anda tidak dapat mengakses bagian lain dari program tersebut. Ini adalah cara untuk mencapai paket.

Untuk menjadi anggota dari kelas umum (yaitu, bagian lain dari program tersebut dapat mengakses), Anda harus menggunakan kata kuncipublik sebelum anggota ini dinyatakan.Semua pengenal didefinisikan dalam masyarakat di belakang variabel atau fungsi dapat digunakan oleh semua fungsi lain untuk mengakses program tersebut.

kelas didefinisikan sebagai teman kelas lain, itu akan mengekspos rincian pelaksanaan, sehingga mengurangi enkapsulasi. Idealnya, sebanyak mungkin di luar rincian pelaksanaan hide dari masing-masing kelas.

Contoh paket data yang

C ++ Program, setiap kelas dengan anggota data publik dan swasta dapat digunakan sebagai contoh enkapsulasi dan abstraksi data. Perhatikan 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;
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

Total 60

Kelas atas angka bersama dan mengembalikan jumlah tersebut. Anggota masyarakataddNum dan getTotaladalah antarmuka eksternal, pengguna perlu tahu untuk menggunakan kelas mereka. anggota swasta asingyang total tersembunyi, pengguna tidak perlu memahami itu, tapi itu adalah pekerjaan kelas normal diperlukan.

Strategi desain

Dalam keadaan normal, kita akan mendirikan negara anggota kelas privat (swasta), kecuali kita benar-benar perlu diekspos, sehingga untuk memastikanenkapsulasi baik.

Ini biasanya diterapkan pada data anggota, tetapi sama berlaku untuk semua anggota, termasuk fungsi virtual.