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

Menguasai Enkapsulasi C#: Melindungi Kode dan Meningkatkan Desain

Enkapsulasi didefinisikan 'sebagai proses meliputi 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 programmer untuk menerapkan tingkat abstraksi yang diinginkan.

Enkapsulasi diimplementasikan dengan menggunakan access specifiers. Sebuah access specifier menentukan lingkup dan visibilitas anggota kelas. C# mendukung access specifier berikut:

Access Specifier Public

Access specifier Public memungkinkan kelas untuk mengekspos variabel anggota dan fungsi anggotanya ke fungsi dan objek lain. Setiap anggota publik dapat diakses dari luar kelas.

Contoh berikut menggambarkan hal ini:

Live Demo
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, hasilnya adalah:

Length: 4.5 Width: 3.5 Area: 15.75

Dalam contoh sebelumnya, variabel anggota length dan width dideklarasikan public, sehingga dapat diakses dari fungsi Main() menggunakan instance kelas Rectangle bernama r.

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

Fungsi anggota Display() juga dideklarasikan public, sehingga juga dapat diakses dari Main() menggunakan instance kelas Rectangle bernama r.

Access Specifier Private

Access specifier Private memungkinkan kelas untuk menyembunyikan variabel anggota dan fungsi anggotanya dari fungsi dan objek lain. Hanya fungsi dari kelas yang sama yang dapat mengakses anggotanya yang private. Bahkan instance kelas tidak dapat mengakses anggota private-nya.

Contoh berikut menggambarkan hal ini:

Live Demo
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, hasilnya adalah:

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

Dalam contoh sebelumnya, variabel anggota length dan width dideklarasikan private, sehingga tidak dapat diakses dari fungsi Main(). Fungsi anggota AcceptDetails() dan Display() dapat mengakses variabel ini. Karena fungsi anggota AcceptDetails() dan Display() dideklarasikan public, mereka dapat diakses dari Main() menggunakan instance kelas Rectangle bernama r.

Access Specifier Protected

Access specifier Protected memungkinkan kelas anak untuk mengakses variabel anggota dan fungsi anggota kelas dasarnya. Dengan cara ini membantu dalam implementasi pewarisan. Kita akan membahas ini dengan lebih rinci di bab pewarisan.

Access Specifier Internal

Access specifier Internal memungkinkan kelas untuk mengekspos variabel anggota dan fungsi anggotanya ke fungsi dan objek lain dalam assembly saat ini. Dengan kata lain, setiap anggota dengan access specifier internal dapat diakses dari kelas atau metode apa pun yang didefinisikan dalam aplikasi tempat anggota tersebut didefinisikan.

Program berikut menggambarkan hal ini:

Live Demo
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, hasilnya adalah:

Length: 4.5 Width: 3.5 Area: 15.75

Dalam contoh sebelumnya, perhatikan bahwa fungsi anggota GetArea() tidak dideklarasikan dengan access specifier apa pun. Maka bagaimana access specifier default dari anggota kelas jika kita tidak menyebutkan apa pun? Itu adalah private.

Access Specifier Protected Internal

Access specifier protected internal 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 mengimplementasikan pewarisan.


Bahasa C

  1. Kelas dan Objek C#: Fondasi untuk OOP yang Kuat
  2. Memahami Modifier Akses C#: Public, Private, Protected, Internal, dan Lainnya
  3. Kata Kunci Static C#: Menguasai Variabel, Metode, dan Kelas Statis
  4. Menguasai Kelas dan Metode Abstrak C#: Panduan Praktis
  5. Memahami Kelas Bersarang C#: Definisi, Penggunaan, dan Warisan
  6. Memahami Kelas dan Metode Parsial C#
  7. Menguasai Kelas dan Metode Tersegel di C#—Kapan Menggunakannya, Contoh Jelas, dan Tingkatkan Keamanan serta Performa Kode
  8. Enkapsulasi Java Dijelaskan: Pengamanan dan Pengendalian Data
  9. Memahami Polimorfisme C++: Panduan Praktis
  10. Menguasai Abstraksi Data C++: Sederhanakan Desain dengan Pemisahan Antarmuka-Implementasi