Pemrograman D - Enkapsulasi

Semua program D terdiri dari dua elemen dasar berikut -

  • Program statements (code) - Ini adalah bagian dari program yang melakukan tindakan dan mereka disebut fungsi.

  • Program data - Ini adalah informasi program yang dipengaruhi oleh fungsi program.

Enkapsulasi adalah konsep Pemrograman Berorientasi Objek yang mengikat data dan fungsi yang memanipulasi data bersama-sama, dan yang menjaga keamanan dari gangguan dan penyalahgunaan luar. Enkapsulasi data mengarah pada konsep OOP yang pentingdata hiding.

Data encapsulation adalah mekanisme bundling data, dan fungsi yang menggunakannya dan data abstraction adalah mekanisme yang hanya menampilkan antarmuka dan menyembunyikan detail implementasi dari pengguna.

D mendukung properti enkapsulasi dan data yang bersembunyi melalui pembuatan tipe yang ditentukan pengguna, yang disebut classes. Kami telah mempelajari bahwa kelas dapat berisiprivate, dilindungi, dan publicanggota. Secara default, semua item yang ditentukan dalam kelas bersifat pribadi. Misalnya -

class Box { 
   public: 
      double getVolume() { 
         return length * breadth * height; 
      } 
   private: 
      double length;      // Length of a box 
      double breadth;     // Breadth of a box 
      double height;      // Height of a box 
};

Variabel panjang, lebar, dan tinggi adalah private. Ini berarti bahwa mereka hanya dapat diakses oleh anggota kelas Box lainnya, dan bukan oleh bagian lain dari program Anda. Ini adalah salah satu cara enkapsulasi dicapai.

Untuk membuat bagian dari kelas public (yaitu, dapat diakses oleh bagian lain dari program Anda), Anda harus mendeklarasikannya setelah publickata kunci. Semua variabel atau fungsi yang ditentukan setelah penentu publik dapat diakses oleh semua fungsi lain di program Anda.

Menjadikan satu kelas sebagai teman yang lain akan mengekspos detail implementasi dan mengurangi enkapsulasi. Sangat ideal untuk menyembunyikan sebanyak mungkin detail dari setiap kelas dari semua kelas lainnya.

Enkapsulasi Data di D

Setiap program D tempat Anda mengimplementasikan kelas dengan anggota publik dan pribadi adalah contoh enkapsulasi data dan abstraksi data. Perhatikan contoh berikut -

Contoh

import std.stdio;
  
class Adder { 
   public: 
      // constructor 
      this(int i = 0) { 
         total = i; 
      } 
      
      // interface to outside world 
      void addNum(int number) { 
         total += number; 
      } 
      
      // interface to outside world 
      int getTotal() { 
         return total; 
      }; 
   
   private: 
      // hidden data from outside world 
      int total; 
}
 
void main( ) { 
   Adder a = new Adder(); 
   
   a.addNum(10); 
   a.addNum(20); 
   a.addNum(30);  
   writeln("Total ",a.getTotal()); 
}

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

Total 60

Kelas di atas menambahkan angka bersama-sama, dan mengembalikan jumlahnya. Anggota publikaddNum dan getTotaladalah antarmuka ke dunia luar dan pengguna perlu mengetahuinya untuk menggunakan kelas. Total anggota pribadi adalah sesuatu yang disembunyikan dari dunia luar, tetapi dibutuhkan agar kelas dapat beroperasi dengan baik.

Strategi Perancangan Kelas di D

Sebagian besar dari kita telah belajar melalui pengalaman pahit untuk membuat anggota kelas menjadi pribadi secara default kecuali kita benar-benar perlu mengekspos mereka. Itu bagusencapsulation.

Kebijakan ini paling sering diterapkan ke anggota data, tetapi berlaku sama untuk semua anggota, termasuk fungsi virtual.