ชื่อบทความ: ความลับของ Set และ Get Functions ใน OOP ภาษา Swift พร้อมสร้างโมเดลโลกจริง
หากคุณมีพื้นฐานการเขียนโปรแกรมแล้วละก็ คุณจะเข้าใจว่าการเขียนโปรแกรมให้ถูกสร้างอย่างมีระเบียบและง่ายต่อการเข้าใจนั้น เป็นเรื่องที่สำคัญไม่น้อยกว่าการแก้ปัญหาทางโปรแกรมเสียเลยสักนิด และนี่คือที่มาของหลักการ OOP หรือ Object-Oriented Programming ในวันนี้คุณจะได้พบกับเทคนิคการใช้งาน set และ get functions ใน Swift ซึ่งเป็นภาษาที่ให้ความสำคัญกับ OOP อย่างมาก
Set และ Get คืออะไร?
กริยา set หมายถึงการกำหนดค่าให้กับ property ในขณะที่ get คือการอ่านค่าเหล่านั้นออกมา เราใช้พวกมันเพื่อควบคุมการเข้าถึง (access control) และตรวจสอบมูลค่าที่ว่านั้นอยู่ในกรอบที่เราต้องการ
พิจารณาว่านี่คือการเย็บเสื้อ เราใช้ set เพื่อกำหนดขนาดเสื้อ และใช้ get เพื่อตรวจวัดว่าขนาดเสื้อนั้นเหมาะสมกับลูกค้าหรือไม่
ตัวอย่างโค้ดที่ 1: ควบคุมการเข้าถึงข้อมูล
class User {
private var _age: Int
var age: Int {
get {
return _age
}
set (newAge) {
if (newAge >= 0) {
_age = newAge
}
}
}
init(age: Int) {
self._age = age
}
}
let user = User(age: 25)
user.age // ได้ 25
user.age = -5 // ไม่มีการเปลี่ยนแปลง เพราะว่าง่ายต่อการตรวจสอบใน set
user.age // ยังคงค่าเป็น 25
ในตัวอย่างนี้เราสร้าง User ที่มี property ที่เราต้องการคุ้มครองหรือ private โดยการใช้ get เพื่ออ่านค่าและใช้ set เพื่อตรวจสอบก่อนการกำหนดค่า
ตัวอย่างโค้ดที่ 2: Computed Properties
class Rectangle {
var width: Double
var height: Double
var area: Double {
get {
return width * height
}
set {
// สมมติว่าเราต้องการรักษารูปทรงสี่เหลี่ยม แต่เปลี่ยนพื้นที่
let squareRoot = sqrt(newValue)
width = squareRoot
height = squareRoot
}
}
init(width: Double, height: Double) {
self.width = width
self.height = height
}
}
let square = Rectangle(width: 4, height: 4)
square.area // ได้ 16
square.area = 25 // กำหนดค่าใหม่เป็น 25
square.width // ตอนนี้ width และ height เป็น 5 ทั้งคู่
ในตัวอย่างที่สองนี้ เรามีการใช้ `area` ในฐานะ computed property ที่มันจะคำนวณค่าขึ้นมาใหม่ตามค่าที่เรากำหนดให้ width และ height ทุกครั้งที่มีการเรียกใช้
ตัวอย่างโค้ดที่ 3: Property Observers
class AudioPlayer {
var volume: Int {
willSet {
print("กำลังจะตั้งค่า Volume ให้เป็น \(newValue)")
}
didSet {
if volume > 100 {
volume = 100
}
print("Volume ได้เปลี่ยนเป็น \(volume) จาก \(oldValue)")
}
}
init(volume: Int) {
self.volume = volume
}
}
let player = AudioPlayer(volume: 80)
player.volume = 120 // จะเห็นผลของ willSet และ didSet ทำงาน
ในโค้ดด้านบน `volume` เป็นตัวอย่างของ property observers ที่ Swift ให้ความสามารถเราในการสังเกตการณ์และตอบสนองต่อการเปลี่ยนแปลงของค่าใน property ก่อนและหลังที่มันเกิดขึ้น
Usecase ในโลกจริง: การบริหารจัดการข้อมูลลูกค้าในแอปพลิเคชันธุรกิจ
ลองนึกถึงแอปพลิเคชันที่ไม่อนุญาตให้ลูกค้ากรอกข้อมูลที่ไม่เหมาะสม เช่น อายุไม่สมเหตุสมผลหรืออีเมลที่ไม่ตรงรูปแบบตัวอย่างเช่น hello[at]example.com ความสามารถของ set และ get ในการบังคับและตรวจสอบจะเข้ามาช่วยเหลือในการออกแบบระบบพร้อมทั้งลดข้อผิดพลาดที่อาจจะเกิดขึ้น
การทำความเข้าใจในการใช้งานของ set และ get รวมไปถึงหลักการของ OOP นี่ล่ะที่เป็นหัวใจหลักในการเขียนโปรแกรมที่มีประสิทธิภาพ หากคุณต้องการยกระดับทักษะการเขียนโปรแกรมของคุณอย่างแท้จริง อย่ามัวรอช้า สมัครเรียนโปรแกรมมิ่งที่ EPT พวกเรามีหลักสูตรและผู้เชี่ยวชาญที่พร้อมจะนำพาคุณไปสู่เส้นทางแห่งการเป็นนักพัฒนาซอฟต์แวร์อย่างมืออาชีพ พร้อมแล้วหรือยังที่จะเขียนโค้ดระดับโลกกับเรา?
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM