Enkapsulasi C ++ (Dengan Contoh)

Dalam tutorial ini, kita akan belajar tentang enkapsulasi dalam C ++ dengan bantuan contoh.

Enkapsulasi adalah salah satu fitur utama dari pemrograman berorientasi objek. Ini melibatkan bundling anggota data dan fungsi di dalam satu kelas.

Menggabungkan anggota dan fungsi data yang serupa di dalam kelas bersama-sama juga membantu dalam penyembunyian data.

Enkapsulasi C ++

Secara umum, enkapsulasi adalah proses membungkus kode yang serupa di satu tempat.

Di C ++, kita dapat menggabungkan anggota data dan fungsi yang beroperasi bersama di dalam satu kelas. Sebagai contoh,

 class Rectangle ( public: int length; int breadth; int getArea() ( return length * breadth; ) );

Dalam program di atas, fungsi getArea()menghitung luas persegi panjang. Untuk menghitung luasnya dibutuhkan panjang dan lebarnya.

Oleh karena itu, anggota data (panjang dan lebarnya) dan fungsinya getArea()disimpan bersama di dalam Rectanglekelas.

Enkapsulasi dalam C ++

Contoh 1: Enkapsulasi C ++

 // Program to calculate the area of a rectangle #include using namespace std; class Rectangle ( public: // Variables required for area calculation int length; int breadth; // Constructor to initialize variables Rectangle(int len, int brth) : length(len), breadth(brth) () // Function to calculate area int getArea() ( return length * breadth; ) ); int main() ( // Create object of Rectangle class Rectangle rect(8, 6); // Call getArea() function cout << "Area = " << rect.getArea(); return 0; )

Keluaran

 Luas = 48

Dalam contoh di atas, kami menghitung luas persegi panjang.

Untuk menghitung suatu daerah, kita perlu dua variabel: panjang dan lebarnya dan fungsi: getArea(). Oleh karena itu, kami menggabungkan variabel dan fungsi ini di dalam satu kelas bernama Persegi Panjang.

Di sini, variabel dan fungsi dapat diakses dari kelas lain juga. Karenanya, ini bukan penyembunyian data .

Ini hanya enkapsulasi . Kami hanya menyimpan kode yang sama.

Catatan: Orang sering menganggap enkapsulasi sebagai penyembunyian data, tetapi itu tidak sepenuhnya benar.

Enkapsulasi mengacu pada penggabungan bidang dan metode terkait bersama-sama. Ini dapat digunakan untuk mencapai penyembunyian data. Enkapsulasi itu sendiri tidak menyembunyikan data.

Mengapa Enkapsulasi?

  • Di C ++, enkapsulasi membantu kita menyatukan data dan fungsi terkait, yang membuat kode kita lebih bersih dan mudah dibaca.
    • Ini membantu untuk mengontrol modifikasi anggota data kami.
      Pertimbangkan situasi di mana kita ingin bidang panjang di kelas menjadi non-negatif. Di sini kita dapat membuat variabel panjang menjadi pribadi dan menerapkan logika di dalam metode setAge(). Sebagai contoh,
       class Rectangle ( private: int age; public: void setLength(int len) ( if (len>= 0) length = len; ) );
    • Fungsi pengambil dan penyetel menyediakan akses hanya baca atau tulis saja untuk anggota kelas kami. Sebagai contoh,
       getLength() // provides read-only access setLength() // provides write-only access
    • Ini membantu untuk memisahkan komponen sistem. Misalnya, kita dapat merangkum kode menjadi beberapa bundel.
      Komponen yang dipisahkan (bundel) ini dapat dikembangkan, diuji, dan di-debug secara independen dan bersamaan. Dan setiap perubahan pada komponen tertentu tidak berpengaruh pada komponen lain.
    • Kami juga dapat mencapai penyembunyian data menggunakan enkapsulasi. Dalam Contoh 1 , jika kita mengubah variabel panjang dan lebarnya menjadi privateatau protected, maka akses ke bidang ini dibatasi.
      Dan, mereka disembunyikan dari kelas luar. Ini disebut penyembunyian data .

    Menyembunyikan Data

    Menyembunyikan data adalah cara membatasi akses anggota data kami dengan menyembunyikan detail implementasi. Enkapsulasi juga menyediakan cara untuk menyembunyikan data.

    Kita dapat menggunakan pengubah akses untuk mencapai data yang bersembunyi di C ++. Sebagai contoh,

    Contoh 2: C ++ Data Menyembunyikan Menggunakan Private Specifier

     #include using namespace std; class Rectangle ( private: // Variables required for area calculation int length; int breadth; public: // Setter function for length void setLength(int len) ( length = len; ) // Setter function for breadth void setBreadth(int brth) ( breadth = brth; ) // Getter function for length int getLength() ( return length; ) // Getter function for breadth int getBreadth() ( return breadth; ) // Function to calculate area int getArea() ( return length * breadth; ) ); int main() ( // Create object of Rectangle class Rectangle rectangle1; // Initialize length using Setter function rectangle1.setLength(8); // Initialize breadth using Setter function rectangle1.setBreadth(6); // Access length using Getter function cout << "Length = " << rectangle1.getLength() << endl; // Access breadth using Getter function cout << "Breadth = " << rectangle1.getBreadth() << endl; // Call getArea() function cout << "Area = " << rectangle1.getArea(); return 0; )

    Keluaran

     Panjang = 8 Lebar = 6 Luas = 48

    Di sini, kami telah membuat variabel panjang dan lebarnya private.

    Artinya variabel ini tidak dapat langsung diakses di luar Rectanglekelas.

    Untuk mengakses variabel pribadi, kita telah menggunakan publicfungsi setLength(), getLength(), setBreadth(), dan getBreadth(). Ini disebut fungsi pengambil dan penyetel.

    Menjadikan variabel pribadi memungkinkan kami membatasi akses tidak sah dari luar kelas. Ini menyembunyikan data .

    Jika kami mencoba mengakses variabel dari main()kelas, kami akan mendapatkan kesalahan.

     // error: rectangle1.length is inaccessible rectangle1.length = 8; // error: rectangle1.breadth is inaccessible rectangle1.length = 6;

Artikel yang menarik...