Cocoa Framework
เข้าโรงบาลครับ เลยถึงโอกาสเขียนบทความยาวๆ ซะเลย หลังจากศึกษา Cocoa มาได้ซักพัก เลยอยากเริ่มอะไรเพื่อให้หลายๆ คนที่จะศึกษามันสามารถต่อยอดตรงนี้ไปได้เลย ไม่ต้องมาเริ่มใหม่ :)
สำหรับบทความชุดนี้คงเป็นเรื่องของ Cocoa Framework ในเบื้องต้น โดยจะเริ่มบทความแรกด้วย What is Cocoa?
cocoa เป็น Object-oriented APIs สำหรับพัฒนาโปรแกรมบน Mac OS X เมื่อเราพูดถึง cocoa เราจะพูดถึง Framework เช่น Quicktime Framework, Cocoa Frame work เป็นต้น จริงๆ ตัว Framework เป็นชุดของ library ที่เป็นพื้นฐานให้เราใช้พัฒนาโปรแกรมออกมาในรูปแบบนั้นๆ เช่น ใน cocoa frame work เราจะใช้วิธีการ call back แทนที่จะเขียนโปรแกรมวนลูปเพื่อคอยตรวจสอบความเปลี่ยนแปลงของโปรแกรมที่เราคุยด้วย ช่วยให้โปรแกรมสามารถทำงานได้รวดเร็วมากขึ้น แต่ก็เพิ่มความซับซ้อน ซึ่ง! ตรงนี้เองที่ Framework จะรับหน้าที่ซ่อนความซับซ้อน ออกไปจากโปรแกรมของเรา
ณ ตอนนี้ cocoa รองรับอยู่สองภาษาคือ Objective-C ซี่งเป็นภาษาพื้นฐานที่สร้าง Cocoa ขึ้นมา และมีภาษา java ซึ่งก็สามารถทำงานได้ดีบน cocoa framework
Foundation
เมื่อไหรก็ตามที่เราต้องการเขียนโปรแกรมโดยที่ไม่มี User interface ไม่มีหน้าตาไม่มี menu เราก็สามารถใช้งาน Foundation ซึ่งเป็นแกนของ Cocoa framework สำหรับฟังก์ชันที่ไม่มี user interface
- Root class (NSObject) class ส่วนมากใน cocoa framework ต่างก็ใช้ NSObject คล้ายๆ กับที่ class Object ในภาษา java
- Operation system facilities and interaction สำหรับนักพัฒนาที่ไม่ต้องการ ลงไปจัดการกับ File system หรืออะไรลึกๆ ในระดับ Unix ก็จะใช้ library ชุดนี้ เช่น NS FileManager, NSBundle, NSPort, NSStream, NSTask, NSHost, NSRunLoop, NSDate เป็นต้น
- Internationalization ที่คอยจัดการเรื่องความแตกต่างของภาษา ลักษณะการเขียนวันที่ ของแต่ละประเทศ ก็จะมี library ให้ใช้ เช่น NSString, NSCharacterSet, NSNumberFormatter, NSDateFormatter, NSLocale
- Collections
- Scripting ที่ช่วยให้เราสามารถใช้ภาษา script ในการควบคุมโปรแกรมได้ ถ้าใครใช้เครื่อง apple อยู่คงเข้าใจว่า applescript นั้นช่วยให้งานง่านขึ้นมาก ถ้าคิดๆ ดูก็คงคล้ายกับ macro ใน MS Office ครับ
- XML processing, Web Access ก็จะมีตั้งแต่ NSXMLParser ที่มากับ panter และ NSXMlDocument, NSXMLNode, NSURL ที่จะมาใหม่ เป็นต้น ซึ่งก็ช่วยให้เราติดต่อกับ xml หรือ web ได้ง่ายขึ้น
- และอีกคลายส่วน ซึ่งคงพูดต่อไปครับ...
Appkit
นี่ก็เป็นหนึ่งในส่วนแกนของ cocoa framework ที่ช่วยให้นักพัฒนาจัดการกับ user interface และส่วนของฟังก์ชั่นต่างๆในระดับ application เช่น
- Drawing, event handling ซึ่งก็ตรงตามชื่อคือช่วยในการวาดรูปบน application และการตรวจสอบเหตุการต่างๆ ที่เกิดขึ้น library ต่างๆ ก็เช่น NSWindows, NSView, NSEvnet, NSBezierPath, NSColor, NSShadow, NSOpenGLView, NSQuickView เป็นต้น
- Standard control จะเห็นว่าใน interface ของ aqua จะมี control ให้ใช้มากมาย เช่นพวกปุ่ม พวกสไลด์ ต่างๆ cocoa ก็มีชุดของ library ที่เอาใช้ควบคุม control เหล่านั้น เช่น NSButton, NSSlider, NSToolbar, NSTableView เป็นต้น
- Standard dialogs เช่นพวก savepanel, controlpanel หรือ พวก alert ที่เราใช้อยู่เป็นประจำและควรจะทำให้เป็นรูปแบบเดียวกันเพื่อให้ผู้ใช้ os สามารถเข้าใจ application ของเราได้ทันทีไม่จำเป็นต้องเสียเวลาเรียนรู้ใหม่
- Accessibility
- Image, sound, media handling
- Document architecture ที่ช่วยให้เราสามารถสร้างเอกสารหลายอันได้ใน application เดียวเหมือนกับใน photoshop หรือ ms word เป็นต้น
- Text เพื่อช่วยในการแก้ปัญหาปใน application ไม่ว่าจะเป็นเรื่องของภาษา ตัวอักษร การตัดคำ หรือคำถูกคำผิดเป็นต้น library ที่มีให้ใช้ก็เช่น NSTextView, NSTypesetter, NSFont เป็นต้น
- และแน่นอนว่ายังมีอีกมายมายที่เราจะพูดถึงต่อไป
Cocoa Strengths
- Full-featured and powerful
- Consistent and easy-to-use จะสังเกตุได้ว่าเมื่อเริ่มศึกษา library หนึ่งของ cocoa ก็จะทำให้เราสามารถเดาได้ว่า library อื่นๆจะทำงานอย่างไร และนั่นทำให้ง่ายมากขึ้นในการพัฒนา
- Customizablea and extensible เราสามารถปรับแต่ง และเพิ่มเติม library ต่างๆใน cocoa ได้เนื่องจาก cocoa เป็น Object-Oriented ทำให้นักพัฒนาสามารถพัฒนาไปได้ในรูปแบบที่เหมาะสมกับ application ของตัวเองมากที่สุด
- Tuned for Mac OS X และแน่นอน library เหล่านี้ถูกปรับแต่ให้ทำงานได้เร็ว และมีเสถียรภาพมากที่สุดสำหรับ Mac OS X cocoa ไม่ได้ถูกออกแบบให้มี layer มากมาย และไม่ได้ทางานอยู่บนพื้นฐานที่อ่อนแอ แต่อยู่บนพื้นฐานของ OS X ที่มีเสถียรภาพอย่าง Unix quark เป็นต้น
- play well with other cocoa มีพื้นฐานอยู่บน Objective-C และ C ดังนั้นจึงไม่มีปัญหาที่เราจะนำเอา Open-source library ที่มีอยู่ทั่วไปมาใช้ได้ทันที และนั่นเป็นที่มาของคำจำกัดความเรื่องความเข็งแกร่งของ cocoa ที่ว่า
Simple Things Simple
Complex Things Possible
ในบทต่อไปจะลองพัฒนา application ง่ายๆบน cocoa
* Cocoa มีบน GNUStep หรือเปล่า?
