การใช้งาน set และ get Function ในภาษา Objective-C ด้วยแนวคิด OOP
ในโลกของการเขียนโปรแกรมที่เจริญเติบโตและวิวัฒนาการไปอย่างไม่หยุดหย่อน หนึ่งในความรู้พื้นฐานที่ว่าด้วย Object-Oriented Programming (OOP) ที่ใครหลายๆ คนควรจะรู้คือการใช้งาน set และ get function ซึ่งสร้างความคล่องตัวและรักษาความปลอดภัยให้กับข้อมูลที่เราจัดการได้เป็นอย่างดี วันนี้เราจะมุ่งเน้นไปที่การใช้งาน set และ get function ในภาษา Objective-C ภาษาที่เคยเป็นจุดศูนย์กลางของการพัฒนาแอปพลิเคชันสำหรับ iOS ก่อนที่จะส่งไม้ต่อให้กับ Swift อย่างไรก็ตาม ความรู้พื้นฐานนี้ยังคงเป็นสิ่งสำคัญที่พัฒนาได้กับการเขียนโปรแกรมในบริบทต่างๆ พร้อมแล้วหรือยังที่จะเดินทางไปกับโลกแห่ง OOP ในภาษา Objective-C?
ใน Objective-C, เราใช้คำสั่ง `@property` เพื่อประกาศตัวแปรที่ใช้ภายใน object และ `@synthesize` ในการสร้าง method เพื่อการเข้าถึง (access) และการกำหนดค่า (modify) ข้อมูล โดยทั่วไป `@synthesize` จะถูกใช้สำหรับการสร้าง setter และ getter โดยอัตโนมัติ แต่เรายังสามารถสร้างเองได้ด้วยมือ เพื่อการควบคุมที่ละเอียดยิ่งขึ้น
ตัวอย่าง CODE ที่ 1: การใช้ @property และ @synthesize
สมมติว่าเรามี class ชื่อว่า `Person`:
@interface Person : NSObject
@property (nonatomic, strong) NSString *name;
@property (nonatomic, assign) NSInteger age;
@end
@implementation Person
@synthesize name;
@synthesize age;
@end
ในตัวอย่างนี้ `@property` ถูกใช้เพื่อประกาศชื่อและอายุ ซึ่งเป็น attribute ของ object และ `@synthesize` ถูกใช้เพื่อสร้าง setter และ getter method.
ตัวอย่าง CODE ที่ 2: การสร้าง Custom Setter และ Getter
บางครั้งเราอาจต้องการควบคุมกระบวนการกำหนดค่าหรืออ่านค่าของตัวแปรมากขึ้น เช่นการเพิ่ม Validation เราสามารถสร้าง setter และ getter ของเราเองได้:
@interface Person : NSObject {
NSString *_name;
NSInteger _age;
}
- (void)setName:(NSString *)newName;
- (NSString *)name;
- (void)setAge:(NSInteger)newAge;
- (NSInteger)age;
@end
@implementation Person
- (void)setName:(NSString *)newName {
// เพิ่ม logic ในการป้องกันการใส่ชื่อที่ไม่ถูกต้องเช่นค่าว่างหรือตัวเลข
if([newName length] > 0) {
_name = newName;
}
}
- (NSString *)name {
return _name;
}
- (void)setAge:(NSInteger)newAge {
// เช็คว่าอายุไม่เป็นลบ
if(newAge >= 0) {
_age = newAge;
}
}
- (NSInteger)age {
return _age;
}
@end
ในตัวอย่างนี้ เราได้สร้าง custom setter และ getter ที่ทำการตรวจสอบก่อนกำหนดค่าให้กับตัวแปร `_name` และ `_age`.
ตัวอย่าง CODE ที่ 3: การใช้สำหรับ Encapsulation
OOP ยึดหลัก Encapsulation ซึ่งหมายความว่าข้อมูลภายใน object ควรจะถูกซ่อนอยู่ และสามารถเข้าถึงได้ผ่าน method ที่ตั้งไว้ เช่น setter และ getter:
@interface Wallet : NSObject
@property (nonatomic, assign) CGFloat balance;
@end
@implementation Wallet {
CGFloat _balance;
}
@synthesize balance = _balance;
- (void)setBalance:(CGFloat)newBalance {
if(newBalance >= 0) {
_balance = newBalance;
} else {
NSLog(@"Balance cannot be negative.");
}
}
@end
ในตัวอย่างนี้ เราใช้ setter เพื่อป้องกันไม่ให้ `balance` มีค่าลบ ซึ่งนำไปใช้ในกรณีของโมเดลการเงินภายในโปรแกรม.
การใช้งาน set และ get function เป็นส่วนสำคัญในการออกแบบ API ที่ดี เช่นในการพัฒนา Application สำหรับ iOS ตัวมี class `Person` นี้สามารถใช้ในการจัดเก็บข้อมูลของ user ที่ต้องการรักษาความปลอดภัยในข้อมูลและตรวจสอบความถูกต้องก่อนที่จะนำไปใช้ เช่นการกรอกข้อมูลลงใน forms.
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM