This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
64
บทท่ี 7แผนภาพสถานะและแผนภาพกิจกรรม
State Diagram and Activity Diagram
จุดประสงค์
1. เพื่อใหนิ้สติเขา้ใจถึงแผนภาพ state diagram และ activity diagram
2. เพื่อใหนิ้สติเขา้ใจถึงหลักในการเขยีน State Diagram และ activity diagram ใหม้ปีระสทิธภิาพ
สญัลักษณ์ท่ีใชใ้น State Diagram จุดเริม่ต้น จุดเริม่ต้นของกิจกรรมต่าง ๆ ใน state diagram
เรยีกวา่ initial state แทนด้วยวงกลมทึบ
จุดสิน้สดุ จุดสิน้สดุของกิจกรรมทัง้หมดเรยีกวา่ End state แทนด้วยวงกลมใส ล้อมรอบวงกลมทึบ
การจำาลองกิจกรรมภายใน state (Internal Activity)
ใชเ้พื่อระบุรายละเอียดในการทำางานของ state ต่าง ๆ ใหช้ดัเจนขึ้นแบง่ได้เป็น
- กิจกรรมที่ทำาเมื่อเขา้มาใน state (entry/action)- กิจกรรมที่ทำาระหวา่งอยูใ่น state (do/action) - กิจกรรมที่ทำาก่อนท่ีจะออกจาก state (exit/action) - กิจกรรมที่ทำาเมื่อเกิดเง่ือนไขต่างๆ ขึ้น (condition/action)
กิจกรรมท่ีทำาเมื่อเขา้มาใน state entry/action
หมายถึง เมื่อเขา้มายงั state น้ีใหท้ำากิจกรรม actionเชน่ entry/count=0
หมายถึง เมื่อเขา้มายงั state ใหค่้า count เป็น 0 กิจกรรมท่ีทำาระหวา่งอยูใ่น state do/action
หมายถึง หลังจากเขา้มายงั state น้ีแล้ว หากไมม่เีง่ือนไขอ่ืนใด ให้ทำากิจกรรม action
68
เชน่ do/count:=count+1หมายถึง เมื่อเขา้มายงั state น้ีใหเ้พิม่ค่า count ทีละ 1
กิจกรรมที่ทำาก่อนออกจาก state exit/action
หมายถึง ขณะท่ีจะออกจาก state น้ีใหท้ำากิจกรรม actionเชน่ exit/show “Good Bye” message
จากการใช ้ Internal Activity เพื่อบรรยายกิจกรรมที่เกิดขึ้นกับ Objects ต่างๆ ในตัวอยา่งท่ีผ่านมา เราสามารถสรา้ง State Diagram ท่ีม ี State ซึ่งม ี Internal Activity ได้ดังรูปต่อไปน้ี
State Diagram ท่ีม ี Internal Activity ในแต่ละ State สามารถอธบิายได้ดังน้ี
State Idle หมายถึง State ของลิฟต์ เมื่อ Lift ยงัอยูท่ี่ชัน้ท่ี 1 เขา้มายงั State น้ี ค่า Floor จะถกู Set ไวท้ี่ 1 เสมอ
70
state Move Down หมายถึง State ของลิฟต์ ท่ีมกีารเคล่ือนที่ลงทีละขัน้ โดยเมื่อใดก็ตามท่ีเขา้มายงั State น้ี ค่า floor จะลดลง ทีละ 1 และ เมื่อใดก็ตามท่ี Floor มค่ีาเป็น 1 ใหห้ยุดลิฟต์ทันที ซึ่งการหยุดลิฟต์ที่ floor เท่ากับ 1 นัน้เท่ากับเป็นการบงัคับใหลิ้ฟต์เขา้มาอยูใ่นสถานะ Idle โดยปรยิาย
State Move Up หมายถึง State ของลิฟต์ ท่ีมกีารเคล่ือนที่ใดก็ตามท่ีเขา้มายงั State น้ี ค่า floor จะเพิม่ขึ้นทีละ 1 และ เมื่อใดก็ตามท่ี Floor มค่ีาเป็น Max ซึ่งหมายถึงลิฟต์อยูใ่นชัน้สงูสดุ ใหห้ยุดลิฟต์ทันที
Reach หมายถึง State ท่ีลิฟต์มาถึงยงัขัน้ที่กำาหนด (มคีนต้อง ขึ้นหรอืลงจากลิฟต์) ซึ่งเมื่อใดก็ตามท่ีเขา้มาถึง State น้ีแล้วต้องหยุดลิฟต์ทันที
วตัถดิุบท่ีนำามาใชใ้นการสรา้ง State Diagram คือ Class Diagram และ Sequence Diagram Class Diagram จะทำาใหเ้หน็ภาพของ Class แต่ละ Class และแต่ละ Method ของ Class จะหมายถึง State Diagram หน่ึงชุด
Sequence Diagram จะทำาใหเ้หน็ภาพกิจกรรมของ Class ซึ่งจะใชเ้พื่อโต้ตอบกับ Class อ่ืน ๆ ใน Problem Domain ซึ่งมสีว่นชว่ยในการพจิารณาแนวการดำาเนินไปของการเปล่ียน State ของ Class หน่ึง ๆ นัน่เอง
หลักในการเขยีน State Diagram ให้มปีระสทิธภิาพมดัีงน้ี 1. จาก Class Diagram ใหด้วูา่ม ีState Diagram กี่ตัวที่
ต้องเขยีน ซึ่งปกติแล้วจะเท่ากับจำานวน Method ของแต่ละ Class รวม
71
กันแต่อยา่งไรก็ตามไมจ่ำาเป็นที่จะต้องเขยีน State Diagram ของทกุๆ Method ของทกุ ๆ Class ในบาง Method ท่ีไมไ่ด้มกีิจกรรมที่ซบัซอ้นก็ไมจ่ำาเป็นต้องม ีState Diagram
2. ในแต่ละ Class ใหพ้จิารณาวา่จะม ีState อะไรบา้ง(โดยยดึจากหลักการของความเป็นจรงิ)โดยยงัไมต้่องคำานึงวา่ม ีMethod อะไรอยู่บา้ง
3. จาก State ท่ีมอียูใ่หเ้ขยีน State Diagram ของแต่ละ Method
4. หากพบวา่ม ี State ใดท่ีจะต้องเพิม่ เพื่อทำาให ้State Diagram สมบูรณ์ขึ้น ใหเ้พิม่เขา้ไป
5. ทำาขอ้ 3 และ 4 จนกวา่จะได้ State Diagram ของ 1 Class ท่ีสมบูรณ์
6. ทำาขอ้ 1 – 5 จนครบทกุ ๆ Class ใน Class Diagram
พจิารณาหลักการเขยีน State Diagram ตัวอยา่งการเขยีน State Diagram ของ Method ต่างๆของ
Class Computer ได้ดังต่อไปน้ีState ท่ีควรจะมขีอง Class Computer คือ
ใน State Ready ก่อน เมื่อมคีำาสัง่เขา้มาใน Memory แล้วตาม Transition Instruction Coming คอมพวิเตอรจ์ะเริม่เขา้ไปยงั State Reading ซึ่งจะอ่านคำาสัง่จาก Memory ทีละคำาสัง่ไปจนกวา่จะเสรจ็สิน้ (Reading Complete)
ซึ่งเมื่ออ่านเสรจ็แล้วคอมพวิเตอรจ์ะสง่คำาสัง่ท่ีอ่านได้ไปยงั CPU ดังระบุไวใ้น State Sending และคอมพวิเตอรจ์ะวนอยูใ่น State น้ี(ดังจะเหน็จาก Transition Sending not Complete) จนกวา่จะเสรจ็สิน้ จงึกลับเขา้ไปยงั State Ready
Execute (การประมวลผล) การประมวลผลในคอมพวิเตอรจ์ะเริม่ต้นที่ State Ready แล้ว
เขา้ไปยงั State Executing ซึ่งจะวนอยูใ่น State น้ีจนกระทัง่คำาสัง่ถกูประมวลผลเสรจ็สิน้ซึ่งการประมวลผลเสรจ็สิน้นัน้แบง่ออกเป็น 2 แบบคือ การประมวลผลคำาสัง่เกี่ยวกับ Memory และการประมวลผลทาง Input / Output
ซึ่งการเสรจ็สิน้การประมวลผลทาง Memory นัน้คอมพวิเตอรจ์ะยา้ยกลับไปยงั State Ready ในขณะที่ เมื่อการประมวลผลทาง Input / Output เสรจ็สิน้ คอมพวิเตอรจ์ะยา้ยไป State Buffering ซึ่งเป็นการบนัทึกผลการประมวลผลไวใ้น Memory เพื่อรอการนำาออกไปยงัอุปกรณ์ Output หลังจากท่ีการทำา Buffering เสรจ็เรยีบรอ้ย จะเขา้ไปยงั State
74
Output ซึ่งเมื่อเขา้ไปยงั State น้ีจะนำาผลที่ได้ออกทางอุปกรณ์ และเมื่อการนำาขอ้มูลออกแสดงทางอุปกรณ์ Output แล้วจงึกลับมาสู ่ State Ready ตามเดิม
Store Data (การบนัทึกผลลัพธส์ู ่Memory) การ Store Data เริม่ต้นที่ State Ready แล้วเขา้สู ่State
Storing Data ซึ่งจะบนัทึกขอ้มูลใน Memory จนกวา่จะครบถ้วนในทกุๆหน่วยขอ้มูล หลังจากนัน้จงึกลับเขา้สู ่State Ready ตามเดิม
ขอ้ควรคำานึงในการเขยีน State Diagram ใน Analysis Phase คือต้องเขยีน State ใหค้รบในภาพรวมทัง้หมดก่อน โดยยงัไมต้่องคำานึงถึงรายละเอียดของแต่ละ State และ Transition มากนัก
แผนภาพแสดงกิจกรรม (Activity Diagram)เป็นแผนภาพที่แสดงกิจกรรมที่เป็นงานยอ่ยของ Object ในแต่ละ Use Case สญัลักษณ์ท่ีใชใ้นการแสดงกิจกรรมจะเป็นสีเ่หล่ียมแคปซูลและมเีสน้ลกูศรเพื่อแสดงลำาดับของกิจกรรมโดยมจุีดเริม่ต้นและจุดสิน้สดุเชน่เดียวกับแผนภาพแสดงสถานะ
แบบฝึกหัด
83
1. จงเขยีน state diagram รถเด็กเล่นชนิดหน่ึง เมื่อเปิดสวติซจ์ะวิง่ไปมาแต่เมื่อมาเจอขอบของวตัถเุชน่ขอบโต๊ะซึ่งอาจจะทำาใหม้นัหล่นลงพื้นได้ มนัจะหยุดและจะเล้ียวซา้ยแต่ถ้าเล้ียวซา้ยแล้วเจอสิง่กีดขวางจะเล้ียวขวาแทนแต่ถ้าไปไมไ่ด้จะถอยหลังและในที่สดุถ้าถอยหลังไมไ่ด้มนัจะปิดสวติซต์นเองโดยอัตโนมติั