Encapsulation คืออะไร
Encapsulation (คุณสมบัติการห่อหุ้ม) เป็นคุณสมบัติหนึ่งของการเขียนโปรแกรมเชิงวัตถุ ซึ่งเป็นการกำหนดความสามารถในการเข้าถึงสมาชิกภายในคลาส ไม่ว่าทั้งจากภายนอกและภายในคลาสก็ตาม มันถูกใช้เพื่อทำให้ข้อมูลภายในเป็นความลับและมีความปลอดภัย และง่ายต่อการเขียนโปรแกรมAccess Modifiers
ประเภทข้อมูลและ ตัวแปรต่างๆ นั้นจะมีระดับการเข้าถึง ซึ่งเป็นสิ่งที่ใช้บอกว่ามันจะมีขอบเขตในการใช้งานของโปรแกรมส่วนนี้หรือ ส่วนอื่นด้วยหรือไม่ โดยรายการเข้าถึงในภาษา C# มีดังนี้public
ตัวแปรสามารถเข้าถึงได้โดยโปรแกรมในส่วนเดียวกัน หรือจากโปรแกรมในส่วนอื่นๆ เช่น อยู่คนละ namespace หรือไฟล์private
ตัวแปรสามารถเข้าถึงได้โดยคลาสเดียวกันหรือ struct เดียวกันprotected
ตัวแปรสามารถเข้าถึงได้โดยคลาสเดียวกันหรือ struct เดียวกัน หรือในคลาสที่ได้รับการถ่ายทอด (inherit) มายังinternal
ตัวแปรสามารถเข้าถึงได้โดยโปรแกรมเดียวกันเท่านั้น หรือในคลาสเดียวกัน ไม่สามารถเข้าถึงจากภายนอกคลาสได้ต่อไปมาดูตัวอย่างของการกำหนดระดับของการเข้าถึงในภาษา C# อย่างไรก็ตามคุณได้เห็นบ้างแล้วในบทเรียนที่ผ่านมา
using System; namespace EncapsulationExample { class Program { static void Main(string[] args) { Planet a = new Planet(); a.name = "Mars"; a.SetRadius(3390); Console.WriteLine("Planet name = " + a.name); Console.WriteLine("Planet radius = " + a.GetRadius() + " km"); Console.ReadKey(); } } class Planet { public string name; private int radius; public void SetRadius (int r) { radius = r; } public int GetRadius () { return radius; } } }ใน ตัวอย่างด้านบน เป็นตัวอย่างการใช้ access modifier แบบ public และ private ในการสร้างตัวแปรที่อยูในคลาส Planet หลังจากนั้นเราไปสร้างออบเจ็คของคลาสนี้ในคลาสหลักของเรา คลาส Program ในการเข้าถึงตัวแปร name ของออบเจ็คสามารถเข้าผ่านคำสั่ง
a.name
ได้ในทันที แต่สำหรับตัวแปร radius นั้นเนื่องจากระดับการเข้าถึงเป็น private เราจะต้องเข้าถึงผ่านเมธอด SetRadius
และ GetRadius
ที่สร้างขึ้นในคลาสและกำหนดระดับการเข้าถึงให้กับฟังก์ชันเหล่านี้เป็น publicใน บทนี้คุณได้เรียนรู้เกี่ยวกับ Encapsulation ในภาษา C# ซึ่งเป็นการกำหนดระดับในการเข้าถึงข้อมูลระดับต่างๆ เพื่อช่วยให้การจัดการต่างๆ ในการเขียนโปรแกรมง่ายขึ้น หรือช่วยปกติความลับบางอย่างในโปรแกรมของเรา
ไม่มีความคิดเห็น:
แสดงความคิดเห็น