MVC-Model View Controller (Part 2)

หลังจาก Entry ก่อนหน้านี้ MVC-Model View Controller (Part 1) เราคงพอจะรู้จัก MVC กันมาบ้างๆ แล้วถ้าใครที่ยังสับสนอยู่คิดว่า Entry นี้น่าจะช่วยให้คลายความสงสัยไปได้นะครับ อย่างที่ได้บอกไว้ก่อนหน้านี้ว่าผมจะยกตัวอย่างเป็น Sample Code ง่ายๆ เพื่อให้เห็นภาพรวมของ MVC ว่าแต่ละส่วนเป็นยังไง ใครทำหน้าที่อะไร คราวนี้เราก็จะได้เห็นตัวจริงเสียงจริงกันซะทีไม่ใช่แค่ในนามธรรมอีกต่อไป มาเริ่มกันเลยครับ

ผมเริ่มด้วยการ New Project ขึ้นมาหนึ่งตัว ชื่อว่า Quize นะครับ เป็นโปรแกรมถาม-ตอบ ดัง Diagram ด้านล่างนี้

MVC Concept

MVC Simulatorจาก Diagram จะเห็นได้ว่า ผมแบ่งข้อมูลออกเป็น 3 ส่วนด้วยกัน คือ View , Controller และ Model นะครับ

เมื่อดูในส่วนของ Model จะเห็นได้ว่า โปรแกรมนี้จะมีข้อมูลชุดคำถามและคำตอบอยู่อย่างละ 3 ข้อโดยเก็บเป็น Array ข้อมูล ดังนี้

Array ของ Question คือ
1. What is 5+5?
2. What is 7×2?
3. What is 8-3?

ส่วน Array ของ Answer คือ
1. 10
2. 14
3. 5

ในส่วนของ View จะประกอบไปด้วย UIButton และก็ UILabel โดย UIButton จะทำหน้าที่ส่ง Action 2 ส่วนด้วยกันก็คือ Show Question และ Show Answer ซึ่งเมื่อ User ทำ Action ที่ Button Show Question ก็จะไป แสดงผล UILabel ที่เป็น Question จากข้อมูลใน Question Array (Model) ของเรา เช่นถ้าเป็นคำถามข้อที่ 1 ก็จะดึงข้อมูลที่ Index 0 ขึ้นมาแสดงผลใน UILabel และในขณะเดียวกันเมื่อ User ทำ Action ที่ Button Show Answer ก็จะไป แสดงผล UILabel ที่เป็น Answer จากข้อมูลใน Answer Array (Model)

คราวนี้คิดว่าน่าจะพอเห็นภาพของ Model และก็ View แล้ว ต่อไปมาดูว่า Controller ของเราทำหน้าที่อะไรบ้าง อย่างที่เคยพูดไว้ใน Entry ที่ผ่านมาว่า Controller จะค่อยทำหน้าที่ Sync ระหว่าง Model และ View ก็ตามนั้นเลยครับ ถ้าเราดูจากใน Diagram ก็คงเห็นว่า Controller ก็คือ QuizeAppDelegate ซึ่งจะทำหน้าที่ในการดึงข้อมูลจาก Array ของ Question, Answer (Model) มาแสดงผลยัง UILabel (View) เมื่อ User มี Interactive กับ View (Click Button)

Download Sample Code

MVC-Model View Controller (Part 1)

ก่อนที่เราจะเริ่มเขียน iOS Application ได้ก็ควรจะเริ่มจากสิ่งที่ผู้เริ่มต้นพัฒนาควรจะรู้กันก่อนนะครับสำหรับผู้ที่ติดตาม Entry ต่างๆของผมอยู่ก็ใจเย็นๆ ก่อนแหละกันนะครับ ผมเชื่อว่าหลายๆท่านน่าจะเคยได้ยิน iPhone Developer ชอบพูดถึง “MVC หรือ Model-View-Controller”  กันมาบ้างแล้วซึ่งถ้ายังสงสัยว่ามันคืออะไรวันนี้เราจะมาหาคำตอบกันครับ

โดยส่วนตัวแล้วผมมองว่ามันเป็นอะไรที่ไม่น่าจะซับซ้อนเกินความเข้าใจของทุกๆคนนะครับ ผมขอเริ่มต้นด้วยการแจกแจงองค์ประกอบของ MVC ออกมาก่อนเลย MVC เป็น Design Pattern รูปแบบหนึ่งประกอบไปด้วย

Model View Controller

1. View
ส่วนที่ User มองเห็นหรือ Touch ได้ เช่น Button, Label

2. Model
จะเก็บข้อมูลที่จะนำไปแสดงในส่วนของ View เช่น Collection Class (NSArray)

3. Controller
คอยทำหน้าที่ให้ View และ Model ทำงานด้วยกันได้ หรือ Sync กันนั่นเอง เช่นถ้าเราเร่ิมสร้าง New Project ขึ้นมาใหม่จาก Xcode เราจะได้ File ที่ Xcode สร้างให้โดยอัตโนมัติชื่อว่า BlahAppDelegate (Blah คือชื่อของ Project) และ AppDelegate นี่แหละที่เป็น Controller ของเรา

Entry ต่อไปจะสร้าง Sample Project เพื่อให้เห็นภาพรวมการทำงานของ MVC ครับ

Newbie for iOS Developer

สำหรับผู้ที่เร่ิมสนใจหรือต้องการที่จะศึกษาเกี่ยวกับการพัฒนาแอพลิเคชั่นบน iPhone หรือ iPad คงมีคำถามในใจมากมายว่าเราจะเริ่มที่ตรงไหน จะต้องใช้อะไรบ้างในการพัฒนา ภาษาที่ใช้ เครื่องที่ใช้ล่ะ ต้องใช้อะไร เราต้องซื้อเครื่อง Macintosh ด้วยหรือเปล่า แล้ว iPhone iPad ด้วยไหมอ่ะ วันนี้เราจะมาเคลียร์คำถามต่างๆ นี้กันเลยครับ

สิ่งที่ต้องมีและขาดไม่ได้เลยนะครับ ประกอบไปด้วย 3 ส่วนหลักๆเลย คือ

OS X

1. ระบบปฎิบัติการ Mac OS X ต้องเป็นเวอร์ชั่น 10.6 (Snow Leopard) ขึ้นไป ผมไม่ได้บอกว่าต้องเป็นเครื่อง Macintosh นะครับ ขอแค่ระบบปฎิบัติการ Mac OS X ก็พอ เพื่อจะใช้ในการติดตั้ง Tool ต่างๆที่เราจะใช้ในการพัฒนา iOS Application

iOS SDK

2. iOS SDK คือ Tools ที่ใช้ในการพัฒนา iOS Application ซึ่งจะประกอบไปด้วย

-Xcode (Xcode4 จะรวม Interface Builder มาให้เรียบร้อย) – เป็นเครื่องมือหลักที่ใช้สำหรับพัฒนา iOS Application
-Instrument – ใช้สำหรับตรวจสอบการทำงานของ Application เช่น Memory Leak เป็นต้น
-iOS Simulator – เป็นตัวจำลองหน้าตาและการทำงานของ iPhone, iPad ก่อนที่จะทดสอบบน Devices จริง

*สำหรับ Xcode เวอร์ชั่น 4.1 สามารถ Download ได้ฟรีผ่าน Mac App Store แต่ Xcode เวอร์ชั่นนี้จะติดตั้งได้เฉพาะบนระบบปฏิบัติการ OS X 10.7 (Lion) เท่านั้นนะครับ และถ้าหากคุณยังใช้ระบบปฎิบัติการ OS X 10.6 (Snow Leopard) อยู่สามารถ Download เวอร์ชั่นที่ต่ำลงไปกว่านี้ได้นั้นคือเวอร์ชั่น 4.0 แต่จะต้องจ่าย $0.99 ด้วยนะครับ ^^

3. Devices (iPhone, iPad, iPod Touch) เป็นอุปกรณ์ที่เราจะใช้สำหรับทดสอบ Application ที่เราได้พัฒนาขึ้นมา แต่ก่อนที่จะทดสอบบน Devices จริงได้นั้นจำเป็นจะต้อง Register iPhone Developer Program กับ​ Apple ก่อนซึ่งจะต้องเสียค่าใช้จ่าย $99/ ปี หรือประมาณ 2,990 บาท/ปี และข้อดีอีกอย่างในการสมัคร iOS Developer Program คือเราจะสามารถเข้าถึง iPhone Dev Center (เป็นแหล่งรวบรวมเอกสารเกี่ยวกับการพัฒนา iOS Application) ได้ และได้พูดคุยใน Webboard เกี่ยวกับการพัฒนา iOS Application กับนักพัฒนาคนอื่นๆ ทั่วโลกรวมถึงทีมงานของ Apple ด้วย และท้ายที่สุดคือทำให้เราสามารถส่ง Application ที่เราพัฒนาขึ้นมาไปขายที่ Apple Store ได้