บทนี้เราจะมาเรียนรู้การสร้าง Class และการใช้งานเบื้องต้น
บทนี้เราจะได้เริ่มต้นในการเขียนโปรแกรมเชิงวัตถุ (Object-Orientied Progamming) หรือ “OOP” กันนะครับ ถ้าจะนิยามให้กระชับคือที่เราจะสร้างวัตถุมาซักชิ้นเพื่อมาใช้งานโดยเราจะอ้างอิงจากการโครงร่างหรือพิมพ์เขียวตัวต้นแบบซึ่งเรียกว่า Class และสามารถนำไปดัดแปลงหรือเพิ่มเติมส่วนต่างๆให้ใช้งานง่ายขึ้น
โดยใน Swift เราจะใช้คำสั่ง “Class” ในการประกาศตัวแปรให้เป็นแบบ OOP หรือเราจะเรียกว่าเป็นวัตถุที่ถูกสร้างมาจากแม่แบบก็ได้
เพื่อให้เข้าใจตรงกัน เวลาเราทำงานกับ Class เราเรียก ตัวแปรข้างในว่า “Property” ส่วน function จะถูกเรียกเป็น “Method”
ลองมาดูตัวอย่างง่ายๆกันครับ
เราจะสร้างหุ่นยนต์มาซักตัว เราเลยออกแบบโครงร่างง่ายๆเอาไว้ก่อน เช่นตั้งชื่อให้มัน

วิธีนำ Class ที่ประกาศไปใช้งาน

จากตัวอย่าง : เราประกาศ myNewToy เป็น Class ของ หุ่นยนต์ จากนั้นจึงใช้ Method ชื่อ setName เพื่อตั้งชื่อให้ myNewToy และสั่งพิมพ์ผลออกมา

เรายังสามารถใช้คำสั่ง init เพื่อกำหนดค่าเริ่มต้นเมื่อเราสร้างหุ่นยนต์เสร็จแล้วก็ได้

จากตัวอย่าง : เรากำหนด init มา 2 แบบๆแรก รับแค่ sName เฉยๆเพื่อตั้งชื่อให้กับหุ่นยนต์ของเรา
หรือ จะใช้ init แบบที่ 2 ที่เราสั่งให้มันพูดได้ด้วย โดยตัวแปร bSayHello จะคอยรับค่าถ้าเป็น true หุ่นยนต์ของเราก็จะพูดได้
เรายังได้เพิ่ม Method ชื่อ “runfast” ขึ้นมาเพื่อสั่งให้มันวิ่งได้
ลองมาสร้างหุ่นยนต์สองตัวโดยใช้ init ที่ต่างกันออกไป

จากตัวอย่าง : เราสร้างหุ่นยนต์จากแม่แบบ (Class clsRobot) และเริ่มตั้งชื่อให้ว่า “Ztar x-10” จากนั้นสั่งให้มันวิ่งด้วยคำสั่ง runfast()

หุ่นยนต์ตัวที่สองเราสร้างให้มันพูดได้ตั้งแต่เริ่ม

จากตัวอย่าง : หุ่นยนต์ตัวที่สองของเราสามารถทักทายกับเราได้ เพราะเรากำหนด bSayHello เป็น true ก่อนจะสั่งให้มันวิ่งด้วยคำสั่ง runfast()

จะเห็นได้ว่าการประกาศและการใช้งาน Class เบื้องต้น จะคล้ายๆ Struct เลยใช่ใหมครับ? แต่จริงๆแล้ว พื้นฐานที่จำเป็นสำหรับเรื่อง OOP หรือการใช้ Class ในการทำงานที่เราต้องเรียนรู้นั้นมีความสามารถที่เหนือกว่า Struct อยู่ มาลองดูแบบแรกกันก่อนนะครับ
1. Inheritance : ความสามารถแรกของ Class คือเราสามารถสืบทอดความสามารถของ Class แม่มายัง Class ลูกได้ คือเราแค่ประกาศ Class หลักหรือแม่พิมพ์หลักเอาไว้แล้วเอา Class ที่ว่านี้ไปสร้างงานอื่นๆได้อีก
โดยรูปแบบการประกาศจะเป็น
class ชื่อclassลูก : ชื่อclassต้นแบบ { …… }
ลองดูตัวอย่างกัน

จากตัวอย่าง : เราสร้างแม่พิมพ์สำหรับหุ่นยนต์ตำรวจ (clsRoboCob) โดยอ้างอิงจากแม่พิมพ์ต้นแบบ (clsRobot) และเพิ่มความสามารถใหม่ๆลงไปเช่น
1 flyhigh : ทำให้หุ่นยนต์เราบินได้
2 shootgun : ทำให้หุ่นยนต์เรายิงปืนปราบเหล่าร้ายได้ โดยกำหนดค่าความแรงของปืนเอาไว้ด้วย
และความสามารถหลักๆอย่าง runfast ก็ยังอยู่นะครับ
นอกจากนั้นเรายังยืม init ของตัวแม่แบบคือการตั้งชื่อมาใช้ (super.init) พร้อมกันนั้น init ตัวใหม่ก็คือเราสามารถตั้งชื่อปืนได้ด้วย (sGunName)
**จากจุดนี้ถ้าเราทำการสืบทอดคลาส (Inheritance)และต้องการทำ init หรือการสั่งให้ทำงานตั้งแต่ตอนสร้าง แล้ว Class ต้นแบบเองก็มี init อยู่แล้วเราต้องใช้คำสั่ง super.init ลงในหุ่นยนต์ตัวใหม่ของเราด้วยนะครับ ไม่งั้นติด error แน่นอน
ลองนำไปใช้งานจริงดูครับ

หุ่นยนต์ตัวใหม่ชื่อ myRobo มีปืนชื่อ “Laser Gun”

สั่งให้วิ่งได้ บินได้ และยิงด้วยความแรง 200 หน่วย
สำหรับบทนี้ก็ฝากไว้เท่านี้ก่อนนะครับ เราจะมาต่อความสามารถของ OOP ในบท Class Part 2 ต่อไปครับ
แนะนำติชมได้ตลอดนะครับ ที่ thaiswiftclass@gmail.com และทาง https://www.facebook.com/thaiswiftclass