# การใช้งาน Encapsulation ใน OOP Concept ผ่านภาษา Delphi Object Pascal
สวัสดีครับทุกท่าน ในโลกแห่งการเขียนโปรแกรมที่มีความหลากหลายอย่างคณิตศาสตร์ หนึ่งในหัวข้อที่น่าสนใจและสำคัญต่อการพัฒนาซอฟต์แวร์คือแนวคิดการเขียนโปรแกรมแบบวัตถุ (OOP - Object-Oriented Programming) และหัวใจสำคัญของ OOP คือ Encapsulation หรือการห่อหุ้มข้อมูล เค้านี้เราจะมาทำความรู้จักกับพื้นฐานของ Encapsulation ในภาษา Delphi Object Pascal แบบง่ายๆ พร้อมด้วยตัวอย่างโค้ดที่นำไปใช้ได้จริง
Encapsulation เป็นหลักการหนึ่งที่ทำให้ซอฟต์แวร์ของเรามีโครงสร้างที่ดีขึ้น โดยทำการจำกัดการเข้าถึงข้อมูลภายในวัตถุ (Object) เฉพาะกับฟังก์ชันที่อยู่ในวัตถุนั้น การทำเช่นนี้ไม่เพียงแต่ช่วยลดความซับซ้อนของโปรแกรม แต่ยังช่วยป้องกันข้อผิดพลาดจากการเข้าถึงหรือแก้ไขตัวแปรโดยไม่เจตนาอีกด้วย
Delphi ใช้ Object Pascal เป็นภาษาหลักในการพัฒนาโปรแกรม และมีการสนับสนุน OOP อย่างเต็มรูปแบบ ต่อไปนี้คือตัวอย่างโค้ดที่แสดงถึงการใช้งาน Encapsulation:
ตัวอย่างที่ 1: การประกาศคลาสและฟิลด์
type
TPerson = class
private
FName: String; // ฟิลด์ส่วนตัว
public
procedure SetName(AName: String);
function GetName: String;
end;
procedure TPerson.SetName(AName: String);
begin
FName := AName;
end;
function TPerson.GetName: String;
begin
Result := FName;
end;
ตัวอย่างที่ 2: การใช้งานวิธีการในการเข้าถึงข้อมูล
var
Person: TPerson;
begin
Person := TPerson.Create;
try
Person.SetName('Somchai'); // ตั้งค่าผ่าน setter
ShowMessage(Person.GetName); // แสดงผลผ่าน getter
finally
Person.Free;
end;
end;
ตัวอย่างที่ 3: การห่อหุ้มข้อมูลอย่างซับซ้อนยิ่งขึ้น
type
TBankAccount = class
private
FBalance: Double; // ยอดเงินในบัญชี
function GetBalance: Double;
public
procedure Deposit(Amount: Double);
procedure Withdraw(Amount: Double);
property Balance: Double read GetBalance;
end;
function TBankAccount.GetBalance: Double;
begin
Result := FBalance;
end;
procedure TBankAccount.Deposit(Amount: Double);
begin
if Amount > 0 then
FBalance := FBalance + Amount;
end;
procedure TBankAccount.Withdraw(Amount: Double);
begin
if (Amount > 0) and (Amount <= FBalance) then
FBalance := FBalance - Amount;
end;
ลองนึกถึงซอฟต์แวร์ที่จัดการกับสมุดบัญชีธนาคาร เราอาจจะมีวัตถุ `BankAccount` ที่มี `Balance` (ยอดเงิน) เป็นข้อมูลส่วนตัว เราไม่ต้องการให้โค้ดภายนอกสามารถเข้าถึงและแก้ไข `Balance` โดยตรง เพราะอาจจะเกิดข้อผิดพลาดที่ทำให้ยอดเงินไม่ถูกต้องได้ ดังนั้น เราจึงใช้ฟังก์ชัน `Deposit` และ `Withdraw` เพื่อจัดการกับการเปลี่ยนแปลงยอดเงินอย่างถูกต้อง
การห่อหุ้มข้อมูลเช่นนี้ไม่เพียงช่วยป้องกันข้อผิดพลาด แต่ยังทำให้เราสามารถพัฒนาและวางระบบที่ซับซ้อนมากขึ้นได้โดยมีความเสี่ยงที่ลดลง
ถ้าคุณใฝ่ฝันที่จะเป็นนักพัฒนาซอฟต์แวร์ที่เข้าใจหลักการของ OOP ที่ลึกซึ้งและสามารถก่อให้เกิดนวัตกรรมใหม่ๆ EPT หรือ Expert-Programming-Tutor พร้อมที่จะจุดประกายความรู้และทักษะการเขียนโค้ดของคุณให้เป็นไปตามความคาดหวังและเกินกว่านั้น มาร่วมเรียนรู้กับเราที่ EPT และก้าวไปสู่การเป็นนักพัฒนาซอฟต์แวร์ที่มีคุณภาพในโลกแห่งการเขียนโปรแกรม์ที่ไม่มีขีดจำกัด!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM