Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

C# - Enkapsulasi

Enkapsulasi didefinisikan 'sebagai proses melampirkan satu atau lebih item dalam paket fisik atau logis'. Enkapsulasi, dalam metodologi pemrograman berorientasi objek, mencegah akses ke detail implementasi.

Abstraksi dan enkapsulasi adalah fitur terkait dalam pemrograman berorientasi objek. Abstraksi memungkinkan membuat informasi yang relevan terlihat dan enkapsulasi memungkinkan pemrogram untuk menerapkan tingkat abstraksi yang diinginkan .

Enkapsulasi diimplementasikan dengan menggunakan penentu akses . Penentu akses mendefinisikan ruang lingkup dan visibilitas anggota kelas. C# mendukung penentu akses berikut

Penentu Akses Publik

Penentu akses publik memungkinkan kelas untuk mengekspos variabel anggota dan fungsi anggotanya ke fungsi dan objek lain. Setiap anggota publik dapat diakses dari luar kelas.

Contoh berikut mengilustrasikan ini

Demo Langsung
using System;

namespace RectangleApplication {
   class Rectangle {
      //member variables
      public double length;
      public double width;
      
      public double GetArea() {
         return length * width;
      }
      public void Display() {
         Console.WriteLine("Length: {0}", length);
         Console.WriteLine("Width: {0}", width);
         Console.WriteLine("Area: {0}", GetArea());
      }
   }//end class Rectangle
   
   class ExecuteRectangle {
      static void Main(string[] args) {
         Rectangle r = new Rectangle();
         r.length = 4.5;
         r.width = 3.5;
         r.Display();
         Console.ReadLine();
      }
   }
}

Ketika kode di atas dikompilasi dan dieksekusi, menghasilkan hasil sebagai berikut

Length: 4.5
Width: 3.5
Area: 15.75

Dalam contoh sebelumnya, panjang dan lebar variabel anggota dideklarasikan publik , sehingga dapat diakses dari fungsi Main() menggunakan instance dari kelas Rectangle, bernama r .

Fungsi anggota Tampilan() dan GetArea() juga dapat mengakses variabel-variabel ini secara langsung tanpa menggunakan instance kelas apa pun.

Fungsi anggota Tampilan() juga dinyatakan publik , jadi bisa juga diakses dari Main() menggunakan instance dari kelas Rectangle, bernama r .

Penentu Akses Pribadi

Penentu akses pribadi memungkinkan kelas untuk menyembunyikan variabel anggota dan fungsi anggotanya dari fungsi dan objek lain. Hanya fungsi dari kelas yang sama yang dapat mengakses anggota pribadinya. Bahkan instance kelas tidak dapat mengakses anggota pribadinya.

Contoh berikut mengilustrasikan ini

Demo Langsung
using System;

namespace RectangleApplication {
   class Rectangle {
      //member variables
      private double length;
      private double width;
      
      public void Acceptdetails() {
         Console.WriteLine("Enter Length: ");
         length = Convert.ToDouble(Console.ReadLine());
         Console.WriteLine("Enter Width: ");
         width = Convert.ToDouble(Console.ReadLine());
      }
      public double GetArea() {
         return length * width;
      }
      public void Display() {
         Console.WriteLine("Length: {0}", length);
         Console.WriteLine("Width: {0}", width);
         Console.WriteLine("Area: {0}", GetArea());
      }
   }//end class Rectangle
   
   class ExecuteRectangle {
      static void Main(string[] args) {
         Rectangle r = new Rectangle();
         r.Acceptdetails();
         r.Display();
         Console.ReadLine();
      }
   }
}

Ketika kode di atas dikompilasi dan dieksekusi, menghasilkan hasil sebagai berikut

Enter Length:
4.4
Enter Width:
3.3
Length: 4.4
Width: 3.3
Area: 14.52

Dalam contoh sebelumnya, panjang dan lebar variabel anggota dideklarasikan pribadi , sehingga tidak dapat diakses dari fungsi Main(). Fungsi anggota AcceptDetails() dan Tampilan() dapat mengakses variabel tersebut. Karena fungsi anggota AcceptDetails() dan Tampilan() dinyatakan publik , mereka dapat diakses dari Main() menggunakan instance dari kelas Rectangle, bernama r .

Penentu Akses Terproteksi

Penentu akses yang dilindungi memungkinkan kelas anak untuk mengakses variabel anggota dan fungsi anggota dari kelas dasarnya. Cara ini membantu dalam mengimplementasikan pewarisan. Kami akan membahas ini lebih detail di bab pewarisan.

Penentu Akses Internal

Penentu akses internal memungkinkan kelas untuk mengekspos variabel anggotanya dan fungsi anggotanya ke fungsi dan objek lain di Majelis saat ini. Dengan kata lain, setiap anggota dengan penentu akses internal dapat diakses dari kelas atau metode apa pun yang ditentukan dalam aplikasi tempat anggota tersebut didefinisikan.

Program berikut mengilustrasikan hal ini

Demo Langsung
using System;

namespace RectangleApplication {
   class Rectangle {
      //member variables
      internal double length;
      internal double width;
      
      double GetArea() {
         return length * width;
      }
      public void Display() {
         Console.WriteLine("Length: {0}", length);
         Console.WriteLine("Width: {0}", width);
         Console.WriteLine("Area: {0}", GetArea());
      }
   }//end class Rectangle
   
   class ExecuteRectangle {
      static void Main(string[] args) {
         Rectangle r = new Rectangle();
         r.length = 4.5;
         r.width = 3.5;
         r.Display();
         Console.ReadLine();
      }
   }
}

Ketika kode di atas dikompilasi dan dieksekusi, menghasilkan hasil sebagai berikut

Length: 4.5
Width: 3.5
Area: 15.75

Pada contoh sebelumnya, perhatikan bahwa fungsi anggota GetArea() tidak dideklarasikan dengan penentu akses apa pun. Lalu apa yang menjadi penentu akses default anggota kelas jika kita tidak menyebutkannya? Ini adalah pribadi .

Penentu Akses Internal yang Dilindungi

Penentu akses internal yang dilindungi memungkinkan kelas untuk menyembunyikan variabel anggota dan fungsi anggotanya dari objek dan fungsi kelas lain, kecuali kelas anak dalam aplikasi yang sama. Ini juga digunakan saat menerapkan pewarisan.


Bahasa C

  1. C# Kelas dan Objek
  2. C# Akses Pengubah
  3. C# Kata Kunci statis
  4. C# kelas abstrak dan metode
  5. C# Kelas Bersarang
  6. C# Kelas Parsial dan Metode Parsial
  7. C# kelas dan metode tersegel
  8. Java - Enkapsulasi
  9. Polimorfisme dalam C++
  10. Abstraksi Data dalam C++