เรียนรู้การสร้าง Class และการใช้งานเบื้องต้น (OOP With Swift Part 2) – Polymorphism

  ควมสามารถของ Class ในส่วนที่ 2 ที่จะกล่าวเราเรียกว่า “Polymorphism” (พอลลีมอร์ฟิสซึม) ซึ่งก็แปลตามพจนานุกรมว่า “ภาวะที่มีหลายรูปแบบ” หรือถ้าเราเอามาใช้กับการเขียนโปรแกรมเชิงวัตถุหรือ OOP เราจะนิยามใหม่ว่า “การแปลงเนื้อหาใน Class ลูก (Inheritance) ให้แสดงผลต่างกันจาก Class แม่” 

เราลองมาดูตัวอย่างสำหรับเรื่อง Polymorphism กันครับ อย่างแรกให้สร้าง Class แม่มาก่อน

ลองพิมพ์ตามตัวอย่างนะครับ

ThaiSwiftClass Class Part 2 Polymorphism

ThaiSwiftClass Class Part 2 Polymorphism

 จากตัวอย่าง เราร่างพิมพ์เขียว (Class) สำหรับสร้างหุ่นยนต์บังคับง่ายๆมาซักตัว มีความสามารถดังนี้

– ตั้งชื่อให้หุ่นยนต์แล้วพูดแนะนำตัวเองได้

– กดปุ่มทิศทางให้หันซ้าย (ButtonLeft) ขวา (ButtonRight) เดินหน้า (ButtonUp) หรือถอยหลัง  (ButtonDown)

– ยิงปืนแสงเลเซอร์ด้วยปุ่ม S (ButtonS)

ลองนำมาใช้งานดู เราจะตั้งชื่อหุ่นยนต์ว่า “Mr.Robo” และให้มันทักทายเจ้าของ ก่อนที่เราจะลองบังคับมันไปทุกทิศทางพร้อมยิงเลเซอร์ออกมา

ThaiSwiftClass Class Part 2 Polymorphism

ThaiSwiftClass Class Part 2 Polymorphism

 

ผลที่ได้

ThaiSwiftClass Class Part 2 Polymorphism

ThaiSwiftClass Class Part 2 Polymorphism

 

ทีนี้เราจะลองสร้างเจ้าหุ่นยนต์โดรนซึ่งสามารถบินได้ ยิงปืนได้ และถ่ายรูปได้ โดยเราจะ Inherit จาก Class แม่ที่ชื่อ clsRobotV2 มา โดยคราวนี้เราจะใช้หลักการของ Polymorphism เข้ามาเพื่อเปลี่ยนแปลงคำสั่งต่างๆภายในทั้งหมดจาก Class แม่ โดยเราจะใช้คำว่า “override” นำหน้า method ที่เราต้องการ

ลองสร้าง Class “clsDrone” ตามตัวอย่างดูนะครับ

ThaiSwiftClass Class Part 2 Polymorphism use

ThaiSwiftClass Class Part 2 Polymorphism use

 

 

จากตัวอย่าง : เราใช้ “override” นำหน้า method

override func sHello เปลี่ยนแปลงประโยคแนะนำตัวของ Drone

override func setName เปลี่ยนแปลงการแนะนำชื่อ

override func ButtonLeft , ButtonRight เพื่อแปลงจากหันไปซ้าย-ขวา เป็นหันหางเสือ (Rudder) ไปทางซ้าย-ขวา

override func ButtonUp เปลี่ยนจากการเดินหน้ามาเป็นการบังคับคันโยกไปข้างหน้าเพื่อหันหัวลงและลดระดับเพดานบิน

override func ButtonDown เปลี่ยนจากการเดินถอยหลังมาเป็นการบังคับคันโยกลงเพื่อเชิดหัวขึ้นใต่ระดับเพดานบินให้สูงขึ้น

override func ButtonS เปลี่ยนจากการยิงเลเซอร์ เป็น จรวดมิสไซล์แทน

– เพิ่มปุ่ม ButtonP เพื่อถ่ายรูปจากบนอากาศ

 

ลองนำไปใช้งานดูนะครับ

ThaiSwiftClass Class Part 2 Polymorphism

ThaiSwiftClass Class Part 2 Polymorphism

 

ThaiSwiftClass Class Part 2 Polymorphism Result

ThaiSwiftClass Class Part 2 Polymorphism Result

 

 

จะเห็นว่าเรื่อง Polymorphism นั้นไม่ยากอย่างที่คิดนะครับ แค่เราดูว่าเราต้องการ method ใดจาก Class แม่ที่เรา inherit มาเราก็แค่นำ override มาวางใว้และสามารถเปลี่ยนแปลงคำสั่งภายในได้ทั้งหมด แต่ทั้งนี้ทั้งนั้นเราไม่สามารถเปลี่ยนแปลง Parameter ของ method นั้นๆได้นะครับ

ThaiSwiftClass Class Part 2 Polymorphism error

ThaiSwiftClass Class Part 2 Polymorphism error

ผลจากการพยายามเพิ่ม Parameter ให้แก่ method “sHello” ที่เรา override มา

 

แนะนำติชมได้ตลอดนะครับ ที่ thaiswiftclass@gmail.com และทาง https://www.facebook.com/thaiswiftclass

 

Leave a Reply