# การใช้งาน set และ get Functions โดยใช้ OOP Concepts ใน Delphi Object Pascal แบบง่ายๆ
การเขียนโปรแกรมในสไตล์วัตถุ (Object-Oriented Programming - OOP) คือการเขียนโปรแกรมที่เน้นไปที่ "วัตถุ" (objects) และการใช้พวกมันเพื่อจำลองสถานการณ์ในโลกจริงในรูปแบบของคอมพิวเตอร์โปรแกรม หนึ่งในภาษาโปรแกรมที่สนับสนุน OOP คือ Delphi Object Pascal ในบทความนี้เราจะมาตรวจสอบการใช้งาน setter และ getter functions ซึ่งเป็นส่วนสำคัญใน OOP ผ่านภาษา Delphi พร้อมด้วยตัวอย่าง code และการอธิบายให้เข้าใจได้อย่างง่ายดาย
Setter และ Getter เป็นหนึ่งในคุณสมบัติพื้นฐานที่มีอยู่ใน OOP เพื่อควบคุมการเข้าถึงข้อมูลของ object ผ่าน methods ที่เรียกว่า encapsulation นั่นคือการซ่อนรายละเอียดภายในของ object จากภายนอก และให้เข้าถึงได้เฉพาะผ่าน interface ที่กำหนด
ตัวอย่างที่ 1: การใช้งาน Setters และ Getters
เราจะมาดูตัวอย่างโค้ดเกี่ยวกับ class `TStudent` ที่มี properties ส่วนตัว(private) และเราจะสร้าง setters และ getters สำหรับแต่ละ property
type
TStudent = class
private
FName: string;
FAge: Integer;
function GetName: string;
procedure SetName(const Value: string);
function GetAge: Integer;
procedure SetAge(const Value: Integer);
public
property Name: string read GetName write SetName;
property Age: Integer read GetAge write SetAge;
end;
function TStudent.GetName: string;
begin
Result := FName;
end;
procedure TStudent.SetName(const Value: string);
begin
FName := Value;
end;
function TStudent.GetAge: Integer;
begin
Result := FAge;
end;
procedure TStudent.SetAge(const Value: Integer);
begin
if (Value > 0) and (Value < 100) then
FAge := Value
else
raise EArgumentException.Create('Invalid age value');
end;
ในตัวอย่างนี้, `TStudent` มี properties `Name` และ `Age` เรามี `GetName` และ `GetAge` ที่ใช้สำหรับการอ่านค่า, ขณะที่ `SetName` และ `SetAge` ใช้เพื่อตรวจสอบค่าที่ถูกต้องก่อนที่จะกำหนดให้กับ field ส่วนตัว
Use Case ในโลกจริง
Setters และ Getters มีประโยชน์อย่างมากในการจัดการกับข้อมูลของ object เช่นในระบบการจัดการนักเรียน, เราอาจจะต้องมีการตรวจสอบอายุของนักเรียนก่อนที่จะอนุญาตให้สมัครเข้าเรียน ซึ่งเกณฑ์อายุที่กำหนดสามารถถูกต้องตรวจสอบได้ผ่าน Setter ของ property `Age`.
ตัวอย่างที่ 2: Read-Only และ Write-Only Properties
บางครั้งเราอาจต้องการที่จะมี property ที่สามารถอ่านอย่างเดียว (read-only) หรือเขียนอย่างเดียว (write-only) เป็นต้นว่า:
type
TEmployee = class
private
FSalary: Currency;
function GetSalary: Currency;
procedure SetSalary(const Value: Currency);
public
property Salary: Currency read GetSalary;
property Bonus: Currency write SetSalary;
end;
function TEmployee.GetSalary: Currency;
begin
Result := FSalary;
end;
procedure TEmployee.SetSalary(const Value: Currency);
begin
if Value > 0 then
FSalary := FSalary + Value
else
raise EArgumentException.Create('Invalid bonus value');
end;
ในตัวอย่างนี้, `Salary` เป็น read-only property ที่หมายความว่ามันเป็นผลรวมของเงินเดือนและโบนัส และ property `Bonus` เป็น write-only ที่ใช้เพื่อเพิ่มเงินโบนัสให้กับพนักงาน
Use Case ในโลกจริง
ในระบบการคำนวณเงินเดือน, `Salary` property อาจจะถูกแสดงให้กับ user ที่มีสิทธิ์มองเห็นได้, ในขณะที่ `Bonus` property อาจจะถูกใช้โดยฝ่ายบุคคลเพื่อเพิ่มโบนัสให้กับพนักงาน
ตัวอย่างที่ 3: Encapsulation และ Validation
การ Validation ข้อมูลก่อนที่จะเปลี่ยนแปลง state ของ object เป็นสิ่งสำคัญมาก เราสามารถทำสิ่งนี้ได้ใน setter ของ property:
type
TAccount = class
private
FBalance: Currency;
procedure SetBalance(const Value: Currency);
public
property Balance: Currency write SetBalance;
end;
procedure TAccount.SetBalance(const Value: Currency);
begin
if Value >= 0 then
FBalance := Value
else
raise EArgumentException.Create('Balance cannot be negative');
end;
ในตัวอย่างนี้, เรามี class `TAccount` ที่มี property `Balance`. Procedure `SetBalance` จะทำการตรวจสอบว่าค่าที่กำลังจะเปลี่ยนเป็นค่าที่ถูกต้อง (ไม่เป็นลบ) ก่อนที่จะเปลี่ยนแปลง
Use Case ในโลกจริง
ในระบบธนาคาร, เราไม่ต้องการให้ลูกค้าสามารถตั้งค่ายอดเงินในบัญชีเป็นค่าลบได้ ด้วยการใช้ setter ที่มีการ validation เราสามารถป้องกันการเกิด error นี้ได้
OOP และการใช้งานของ setters และ getters ใน Delphi Object Pascal ช่วยให้เราสามารถสร้างโค้ดที่มีความยืดหยุ่นและปลอดภัยมากขึ้นโดยใช้หลักการ encapsulation มันทำให้เราสามารถควบคุมและปกป้องข้อมูลของ object จากการใช้งานที่ไม่ถูกต้องจากภายนอก นอกจากนี้ยังช่วยให้การทดสอบและบำรุงรักษาโค้ดเป็นไปอย่างง่ายขึ้น
เมื่อเราพิจารณาถึงความสำคัญของการเขียนโค้ดที่มีโครงสร้างและมีความปลอดภัย เราจึงขอเชิญชวนนักเรียนที่สนใจในการเพิ่มพูนความรู้ในเรื่องนี้มาเรียนรู้และฝึกหัดกับเราที่ EPT เพื่อเพิ่มศักยภาพของคุณในการเป็นโปรแกรมเมอร์มืออาชีพ ที่ EPT คุณจะได้สัมผัสกับหลักการ OOP และการใช้ Delphi อย่างลึกซึ้ง เรียนรู้การจัดการข้อมูล และสร้างโปรแกรมที่มีประสิทธิภาพและน่าเชื่อถือ
ณ EPT เราให้ความรู้ทั้งแบบทฤษฎีและปฏิบัติ เพื่อให้นักเรียนได้เรียนรู้ทุกแง่มุมของการเขียนโปรแกรมที่มีประสิทธิภาพ ความเข้าใจเรื่อง OOP เป็นหลักสูตรพื้นฐานที่จะนำพาคุณไปสู่การเป็นนักพัฒนาที่มีคุณภาพ ติดต่อเราทันทีเพื่อเข้าสู่โลกแห่งการพัฒนาซอฟต์แวร์ที่น่าตื่นตาตื่นใจ!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM