วันพุธที่ 29 สิงหาคม พ.ศ. 2555

INTRODUCTION TO iOS Programming (Day01 @ iDeveloper03)


เมื่อวานเป็นวันแรก วันที่ 28-08-55

ได้ไปอบรม iDeveloper รุ่นที่ 3

ที่สถาบันพระจอมเกล้าลาดกระบัง

อะหื้ม มมมมมม

การเดินทาง ยากสักเล็กน้อย หลายต่อเสียเหลือเกิน

จะโทษใครก็ไม่ได้ เพราะตื่นไม่ไหวเอง ทำให้การเดินทางเร่งรีบ

ออกจากบ้าน นั่งมอไซด์ ต่อใต้ดิน ไปแอร์พอตลิ้ง นั่งแท็กซี่

555 5 นั่งรถจนเหนื่อยเลย

ไปถึงนั่งเรียน เรียน เรียน 6 ชั่วโมง ที่แสนจะมีความสุข

ตกเย็นก็กลับบ้าน นั่งแท็กซี่ แอร์พอตลิ้ง BTS สองแถว

ลดมานิดหน่อยเนอะ ว่ามะ 555


แต่มันเป็นการเดินทางที่คุ้มค่า คุมกับความรู้ที่ได้มา
และจะตั้งใจเรียนจริงๆ อิอิ

ป.ล. ไปลาดกระบังครั้งนี้ ทำให้รู้สึกว่าอยากเรียน มหาลัยที่แสนกว้าง 555 สงสัยจะไม่ทันแล้วหล่ะ คริคริ




บทแรกที่เรียนในวันนี้
INTRODUCTION TO iOS Programming
By ดร.อิสระ อนันตวราศิลป์


IOS
IOS  คือ ระบบปฏิบัติการของอุปกรณ์เคลื่อนที่ของ Apps 
ถูกออกแบบและพัฒนามาจาก Mac OS 
ซึ่งเป็นระบบ UNIX (ระบบเก่า ที่เสถียรมาก) ประเภทหนึ่ง
ปัจจุบันอยู่้ที่เวอร์ชั่น 5.1.1 ซึ่ง 6.0 
น่าจะออกในเร็ววันนี้ (ข่าวลือมาว่าน่าจะกลางเดือนกันยายน)

iDevice หมายถึง อุปกรณ์ต่างๆ ได้แต่ iPhone , iPod Touch , iPad , Apple TV 
มีฟังก์ชันการทำงานต่างๆ เช่น Swipe (เลื่อน) , 
Tap (กด สัมผัส เลือกเมนู เลือกปุ๋ม) , Pinch (หยิบ รวบ การใช้ 4  นิ้ว 5 นิ้ว)
ปกติแล้วจะทำด้วย Touch Gestures
มีฮาร์ตแวร์ต่างๆภายใน iDevice มากมาย ดังนี้
- กล้องถ่ายรูป / วีดีโอ
- Gyroscope : ตรวจับการวางตัวบนแนวระนาบของอุปกรณ์
- Accelerometer : ตรวจจับอัตราเร่ง
- GPS receiver : ตรวจหาตำแหน่งปัจจุบัน
- Digital compass : ใช้ตรวจหาทิศทาง
- GSM : ติดต่อโทรเข้า โทรออก SMS MMS

* ในแต่ระ อุปกร์จะมีฮาร์แวร์ที่แตกต่างกัน เช่น iPad WiFi จะไม่มีฟังก์ชั่น GPS *


Apps & AppStore
อุปกรณ์ IOS สามารถรัน App ต่างๆที่สามารถหาโหลด 
หาซื้อได้จาก AppStore ซึ่งปัจจุบันนี้ มี App มากมายถึง 725,000 app 
มีการดาวโหลดมากกว่า 2.5 หมื่นล้านครั้ง


สิ่งที่เราต้องใช้ ในการพัฒนา App
1. IOS SDK (Software Development Kit)
1.1 Xcode IDE (Integrated Development Environment)  
ชุดของโปรแกรมที่ใช้พัฒนา IOS , MacOS
- Source cod editor
- Compiler
- Debugger
1.2 Device Simulator โปรแกรมจำลองการทำงานของ iDevice
2. ภาษา Objective - C
3. เครื่อง Mac .. Xbox & Simulator ทำงานบน Mac เท่านั้น
4. IOS Device (iDevice)

App Deployment
(การลง App ใน Device ของตัวเอง หรือ การขาย App ภายใน AppStore)
1. Registered iOS Developer
นักพัฒนาต้องลงทะเบียนกับแอปเปิ้ล
ถึงจะสามารถเข้าไปโหลด Xcod และ iOS SDK ได้
2. iOS Developer program Mermber
นักพัฒนาต้องจ่ายเงินให้กับแอปเปิ้ล
ถึงสามารถนำ App ลงเครื่องของคุณ และ นำไปขายใน AppStore ได้
โดยแบ่งเป็น 3 ประเทภ ดังนี้
- Individual Program ($99) 
ขายหรือแจกภายใน AppStore โดนหักค่าการตลาด 30%

- Enterprise Program ($299) 
จัดจำหน่าย ทำการตลาดเอง

- University program (Free) 
ลงได้ภายในเครื่องที่ใช้พัฒนา ไม่สามารถแจกจ่ายได้

*ทั้ง 3 ประเภทนั้นจะสามารถใช้ได้ภายใน 1  ปี (สัญญา ปีต่อปี)

สรุปคือ การจะเป็นนักพัฒนาต้องมีดังนี้
1. รายชื่อทีมพัฒนา
2. รายชื่อเครื่องที่จะใช้พัฒนา
3. รายชื่อ App ที่จะใช้พัฒน

จากนั้นนำไปติดต่อกับทาง Apple เพื่อขอจดทะเบียน 
ในประเภทต่างๆ ดังได้กล่าวไว้ข้างต้น


OOP & UML
บทเรียนที่สอง
โดย ดร.อิสระ  อนันตวราศิลป์

Object Oriented Programming (OOP)
  • การเขียนโปรแกรมเชิงวัตถุ
  • รูปแบบการเขียนโปรแกรมที่ใช้แนวทางความคิดของ วัตถุ ในการออกแบบ และ สร้าง โปรแกรม
Object ,, อ๊อบเจกต์ ,, วัตถุ
  • Attributes : คุณสมบัติเฉพาะ หรือ ข้อมูลของวัตถุ
  • Methods ,, Operations : กริยา การโต้ตอบ หรือคำสั่งที่สามารถกระทำกับวัตถุได้ ถ้าในภาษาทั่วไป อาจจะเรียกว่า Function 

ตัวอย่างเช่น บัญชีธนาคารของนายดำ แซ่ขาว
  • Object : บัญชีธนาคารนายดำ
  • Attributes : 00001 , นายดำ แซ่ขาว , 5000 บาท , ........
  • Methods :  การฝาก  ,  การถอน  ,  การโอน  ,  การดูจำนวนเงิน .....

Class (คลาส) : ต้นแบบกำหนดคุณสมบัติ และการทำงานของวัตถุ ประกอบไปด้วย Attributes และ Methods เหมือนกัน

ตัวอย่างเช่น บัญชีธนาคาร
  • Class : บัญชีธนาคาร
  • Attributes (คุณสมบัติเฉพาะของคลาสนั้นๆ) :  เลขที่บัญชี , ชื่อบัญชี , จำนวนเงินภายในบัญชี ....
  • Methods (คำสั่งที่คลาสนั้นสามารถทำได้ สามารถรับได้) : การฝาก  ,  การถอน  ,  การโอน  ,  การดูจำนวนเงิน .....
Object Instantiation : การจองพื้นที่ในหน่วยความจำ (Memory) ไว้สำหรับการเรียนใช้้อมูลผ่านทางอ๊อบเจกต์ของคลาสนั้นๆ โดยการจองนั้นจะมีค่า Attribute ที่แตกต่างกันออกไป

ตัวอย่างเช่น บัญชีธนาคารของนายดำ และนางสาวแดง
  • Object : บัญชีธนาคารนายดำ
  • Attributes : 00001 , นายดำ แซ่ขาว , 5000 บาท , ........
  • Methods :  การฝาก  ,  การถอน  ,  การโอน  ,  การดูจำนวนเงิน .....

  • Object : บัญชีธนาคารนางสาวแดง
  • Attributes : 00002 , นางสาวแดง แซ่เขียว , 5000 บาท , ........
  • Methods :  การฝาก  ,  การถอน  ,  การโอน  ,  การดูจำนวนเงิน .....
* จะเห็นได้ว่ามีการขีดเส้นใต้ คือสิ่ที่จะต้องไม่เหมือนกัน เพื่อการเรียกใช้ เป็นการแทนด้วยรหัส ลองมองกลับไป การที่เรามีเลขที่บัญชีของเรากับของเพื่อน ซึ่งเป็นธนาคารเดียวกัน จำเป็นจะต้องไม่ซ้ำกัน ถ้าซ้ำกันก็เรื่องใหญ่แล้วคร๊าบพี่น้อง *

Object Messaging : การปฏิสัมพันธ์กันโดยการส่งข้อความ
  • Messaging คือข้อความ หรือคำสั่งที่อ๊อบเจกต์นั้นสามารถทำได้ โดยการกำหนดผ่านทาง Attributes ไว้ตายตัวอยู่แล้ว ถ้าต้องการทำนอกเหนือจากนั้นต้องทำการสร้าง Attributes เพิ่มก่อน เพราะ Attribute หมายถึงความสามารถที่อ๊อบเจ๊กต์นั้นสามารถกระทำได้ ดังได้กล่าวไว้ข้างต้นแล้ว
  • ตัวอย่างเช่น : ต้องการฝากเงินจำนวน 100 บาท ,, ต้องกาดูยอดเงิน
Encapsulation : การซ้อนข้อมูลไว้ภายใน ,, การซ้อน Attribute ของอ๊อบเจกต์ไว้ภายใต้ accessor 

  • Accessor : คือการขอดูข้อมูล การ retune ค่าที่อยู่ภายใน Attribute เป็นพวกของการ get  Methods ต่างๆ
  • Mutator : คือการเพิ่มเติม ปรับปรุงข้อมูล ภายใน Attribute เป็นพวกของการ set Methods
ข้อดีของ Encapsulation

  • ปลอดภัย : สามารถควบคุมการเข้าถึงข้อมูลของอ๊อบเจกต์ได้
  • แก้ไขง่าย : แก้ไขได้ทันที โดยไม่มีผลกระทบถึงอ๊อบเจกต์ตัวอื่นๆ ถ้ามีการเชื่อมโยงกันของข้อมูลก็สามารถเรียกใช้ผ่านทาง Methods เดิม แต่เพียงค่าที่ออกมานั้นจะมีการปรับปรุงเป็นค่าที่ถูกต้องแล้ว
ตัวอย่างเช่น การดูจำนวนดอกเบี้ยในบัญชีธนาคารของนายดำ
  • Object : บัญชีธนาคารนายดำ
  • Attributes : 00001 , นายดำ แซ่ขาว , 5000 บาท , ........
  • Methods :  การฝาก  ,  การถอน  ,  การโอน  ,  การดูจำนวนเงิน .....
จากตัวอย่างขั้นต้น นายดำจะไม่สามารถดูจำนวนดอกเบี้ยภายในธนาคารได้ เพราะไม่มี Methods ในการแสดงจำนวนดอกเบี้ย ภายในบัญชีของนายดำ ดังนั้นถ้าต้องการเพิ่มเติม Methods นั้น จำเป็นต้องไปขอให้ธนาคารเพิ่ม Methods การดูจำนวนดอกเบี้ยให้ก้บระบบบัญชีธนาคาร (Class บัญชีธนาคาร)

Inheritance : การสืบทอดคุณสมบัติจากคลาสหนึ่ง มายังอีกคลาสหนึ่งได้

ตัวอย่างเช่น A รับการสืบทอดคุณสมบัติมาจาก B
                     นั้นหมายความว่า Class A เป็น sub Class ของ Class B
                     และ Class B เป็น Super Class ของ Class A
** Sub Class สามารถเพิ่มเติม ปรับปรุง เปลี่ยนแปลง Attribute , Method ของ Super Class ได้ **

ตัวอย่างเช่น บัญชีออมเงินที่สืบทอดมาจากบัญชีธนาคาร
  • Super Class : บัญชีธนาคาร
  • Sub Class : บัญชีออมเงิน
  • Attributes (คุณสมบัติเฉพาะของคลาสนั้นๆ) :  เลขที่บัญชี , ชื่อบัญชี , จำนวนเงินภายในบัญชี , อัตราดอกเบี้ย ....
  • Methods (คำสั่งที่คลาสนั้นสามารถทำได้ สามารถรับได้) : การฝาก  ,  การถอน  ,  การโอน  ,  การดูจำนวนเงิน , ดูจำนวนอัตราดอกเบี้ย , กำหนดอัตราดอกเบี้ย , จำนวนเงินที่อัพเดท ....
จากตัวอย่างจะเห็นได้ว่ามีการเพิ่มเติมค่าของอัตราดอกเบี้ย และ Method การทำงานต่างๆ เพราะโดยปกติแล้ว ถ้ามีการออมเงิน จำเป็นจะต้องมีเรื่องของอัตราดอกเบี้ยเข้ามาเกี่ยวข้อง และผู้ฝากมักจะอยากรู้จำนวนเงินที่ตัวเองได้จากการออม ทั้งผลรวม และ จำนวนเงินที่ได้จากดอกเบี้ย

Unified Modeling Language : UML
 UML เป็นชุดแผนภาพลักษณะ (diagram) เพื่อแสดง Model เชิงวัตถุและอธิบายกระบวนการการทำงาน และเป็นชุดที่มีความหมายเป็นมาตรฐาน มีหลายประเภท ดังต่อไปนี้

USE CASE Diagram
อธิบายสิ่งที่ระบบทำ และมีปฏิสัมพันธ์กัน ระหว่างระบบ กับ ผู้กระทำ (Actor) ในมุมมองของผู้กระทำ

CLASS Diagram
อธิบายโครงสร้างของระบบ ด้วยคลาสและอ๊อเจกต์ ซึ่งจะบงบอกว่า คลาสๆนั้นสามารถเก็บ Attribute อะไรได้บ้าง มีความสามารถในการกระทำ Attribute ผ่านทาง Methods อะไรได้บ้าง

ASSOCTATIONS
ความสัมพันธ์ระหว่างคลาส 2 คลาส
  • สามารถระบุจำนวนความสัมพันธ์ได้
  • สามารถระบุทิศทางของความสัมพันธ์ได้
INHERITANCE (IS A)
เป็นความสัมพันธ์ระหว่าง Sub Class และ Super Class ที่มีการเรียกใช้ Method หรือ Attribute ตัวเดียวกัน โดยมีการระบุว่า มีหรือไม่มีผ่านทาง สามเหลี่ยม และตัวที่ระบุถึงจะกลายเป็นตัวเอียง ในส่วนของ Super Class
  • Describing Taxonomy : ความสัมพันธ์ของคลาส รูปแบบ is a นั้นจะมีการให้ความสำคัญจากบนลงล่าง โดยคลาสที่อยู่บนสุดจะเป็นคลาสที่ใหญ่สุดเปรียเสมอคลาสแม่
  • Abstract Operation : เป็นการกำหนดตัวเอียงให้กับ Attribute หรือ Methods ที่อยู่ภาย Super Class ที่ถูกอ้างถึง
ตัวอย่างเช่น คลาสนกบินได้ is a คลาสนก แสดงให้เห็นว่า คลาสนกบินได้ เป็น Sub Class ที่มีการ inheritance บางอย่างจากคลาสนกที่เป็น Super Class

AGGREGATION (PART - OF)
ความสัมพันธ์ที่ Class หนึ่ง เป็นส่วนหนึ่งของอีก Class หนึ่ง โดยระบุผ่านทางสัญลักษณ์ สี่เหลี่ยมข้าวหลามตัด

ตัวอย่างเช่น Class นาฬิกา จะมีส่วนประกอบที่ประกอบไปด้วย คลาสปุ๋ม คลาสหน้าจอ คลาสแบตเตอรี่่ เป็นต้น

COMPOSITION : ส่วนที่แข็งกว่า Aggregation
ความสัมพันธืที่ระบุว่า จำเป็นจะต้องมีอีกคลาสหนึ่งเป็นส่วนประกอบ ซึ่งถ้า Composed Class (ผู้ถูกกระทำ) ถูกทำลาย แสดงว่า Composing Class (ผู้กระทำ) จะถูกทำลายไปด้วย

ตัวอย่างเช่น Class นาฬิกา จำเป็นจะต้องมี Class แบตเตอรี่ เพราะถ้า ไม่มีแสดงว่านาฬิกาไม่สามารถทำงานได้

DEPENDENCY
ความสัมพันธ์ที่แสดงให้เห็นว่า คลาส A ต้องการ คลาส B ในการทำงาน
ถ้าคลาส B เปลี่ยนปลง คลาส A จะเปลี่ยนแปลงตาม
แต่ถ้าคลาส A เปลี่ยนแปลง จะไม่มีผลกระทบ หรือมีการเปลี่ยนแปลงที่คลาส B

สัญลักษณ์ที่ใช้ในการแสดง คือการใช้เส้นที่มีหัวลูกศรชี้จากคลาส B ไปยังคลาส A

PACKAGE Diagram
เป็นการช่วยให้มองเห็นภาพรวมว่าสิ่งที่เราทำนั้นมีอะไรบ้าง
ซึ่งการออกแบบที่ดี ควรจะทำการออกแบบที่แสดงให้หัวลูกศรไปในทิศทางเดียวกัน
  • Package : กลุ่มของคลาสต่างๆที่เกี่ยวข้องกัน หรือทำงานร่วมกันบ่อยๆ
  • Sub Package : การแบ่งกลุ่มย่อยๆ ที่ทำงานร่วมกันกับ Package ดังกล่าวในรูปแบบคล้ายๆกัน
  • Subsystem decomposition : เป็นรูปแบบการการแยกออกมาเป็นส่วนๆ ที่ประกอบไปด้วย package และ Sub Package
ACTIVITY Diagram
แสดงให้เห็นถึงขั้นตอนการทำงานของระบบ และการส่งอ๊อบเจกต์ในแต่ละขั้นตอนการทำงาน บอกว่าเริ่มต้นจากจุดใด ส่วนไหนที่ทำงานพร้อมกันได้บ้าง ผลลัพธ์ที่ได้ส่งต่อไปยังกระบวนการใด เป็นต้น

SEQUENCE Diagram
อธิบายขั้นตอนการเรียก Method ต่างๆ ผ่านทางการส่ง Message ระหว่าง Class ว่าต้องส่งอะไรจากใคร ไปได้ผลกลับมาเป็นอย่างไร เป็นต้น




ปล. หากมีข้อผิดพลาดประการใด ขออภัยมา ณ ที่นี้ด้วย ^^"
ปล. จบแล้ว 1 วัน การเขียน Blog ไม่ใช่ง่ายอย่างที่คิดเลยหล่ะ T_T
ปล. ขอกำลังใจเยอะๆน๊า จะได้มีแรงเขียนต่อ 55555




4 ความคิดเห็น:

  1. คำตอบ
    1. ตอนแรกคิดว่าชิวๆ พิมๆบ่นๆ เอาเข้าจริง ยากมาก
      นี่ทำตั้งแต่วันพุธที่แล้วอะ 5555

      ลบ
  2. ไม่ระบุชื่อ3 กันยายน 2555 เวลา 21:12

    สู้ๆ ครับ :)

    ตอบลบ
  3. สู้ๆต่อไปน้า มีประโยชน์มากๆ :)

    ตอบลบ

หมายเหตุ: มีเพียงสมาชิกของบล็อกนี้เท่านั้นที่สามารถแสดงความคิดเห็น