23
64 บบบบบ 7 บบบบบบบบบบบบบบบบบบบบบบบบบบบ State Diagram and Activity Diagram บบบบบบบบบบ 1. เเเเเเเเเเเเเเเเเเเเเเเเเเเเ state diagram เเเ activity diagram 2. เเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเเ State Diagram เเเ activity diagram เเเเเ เเเเเเเเเเเ เเเเเเเเเเเเเเเเเเเเเเเ UML Diagram เเเเเเเ เเเ Dynamic เเเเ Behavior เเเเเเ 2 diagrams เเเ Sequence เเเ Collaboration Diagram เเเเเเเเเเเเเเเเเ Diagrams เเเเเเเเเเเเเเเ Dynamic เเเ State เเเ Activity Diagram State Diagram State Diagram เเเเเเเเเเเ State transition diagram เเเเ Harel diagram (statecharts) State Diagram เเเเเเเเเเเเเเเเเเเเเเ(state) เเเเเ เเเ Object เเเเเเเเเเเเเเเเเเเเเเเเเเเเ เเเเเเเเ เเเเเเเ เเเเเเเเเ (Event) เเเเเเเเเเเ เเเ เเเเเเเเเเ State Diagram เเเเเเเเเเเเเเ Class

pirun.ku.ac.thpirun.ku.ac.th/~faastwc/02739424/handout/chapter7.docx · Web viewบทท 7 แผนภาพ สถานะและแผนภาพก จกรรม State

  • Upload
    hatu

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

64

บทท่ี 7แผนภาพสถานะและแผนภาพกิจกรรม

State Diagram and Activity Diagram

จุดประสงค์

1. เพื่อใหนิ้สติเขา้ใจถึงแผนภาพ state diagram และ activity diagram

2. เพื่อใหนิ้สติเขา้ใจถึงหลักในการเขยีน State Diagram และ activity diagram ใหม้ปีระสทิธภิาพ

ในบทก่อนหน้าได้กล่าวถึง UML Diagram ในกลุ่มของ Dynamic หรอื Behavior มาแล้ว 2 diagrams คือ Sequence และ Collaboration Diagram

ในบทน้ี จะกล่าวถึง Diagrams ท่ีเหลือในกลุ่ม Dynamic คือ State และ Activity DiagramState Diagram

State Diagram อาจเรยีกวา่ State transition diagram หรอื Harel diagram (statecharts) State Diagram เป็นแผนภาพใชแ้สดงสถานะ(state) ต่างๆ ของ Object ท่ีเป็นได้ในระหวา่งชว่งชวีติ ในการตอบสนองต่อ เหตกุารณ์  (Event) ท่ีเกิดขึ้น โดยทัว่ไปแล้ว State Diagram จะไมถ่กูใชก้ับ Class ทัง้หมด แต่จะใชอ้ธบิาย

65

เฉพาะ Class ท่ีมคีวามซบัซอ้นสงูเท่านัน้ เพื่อที่จะชว่ยใหก้ารออกแบบ Algorithm ง่ายขึ้นตัวอยา่ง State Diagram

State และ Transition ใน ระบบใดๆก็ตาม

สิง่ที่เคล่ือนไหวหรอืการเปล่ียนแปลงใด ๆ ท่ีเกิดขึ้นในระบบนัน้ เรยีกวา่ กิจกรรม (Activity) ซึ่งกิจกรรมนัน้เกิดขึ้นจาก การท่ี Objects ในระบบมปีฏิสมัพนัธก์ัน

สิง่ที่ใชเ้พื่อบรรยายกิจกรรมโดยรวมที่เกิดขึ้นในระบบก็คือ Sequence Diagram แต่เมื่อพจิารณาเขา้ไปในรายละเอียดของกิจกรรมที่เกิดขึ้นจะพบวา่ กิจกรรมโดยรวมของระบบเกิดจากกิจกรรมยอ่ยของ Object แต่ละตัวรวมกันนัน่เอง

กลไกท่ีทำาใหร้ะบบมกีิจกรรมก็คือการรบั/สง่ Message กิจกรรมที่เกิดขึ้นใน Object นัน้ เกิดจาก 2 สิง่ประกอบกัน นัน่คือ สถานะ(State) และ การเปล่ียนสถานะ (Transition) การท่ี Object ใด ๆ เปล่ียนจาก State ท่ี 1 ไปยงั State ท่ี 2 จะทำาใหเ้กิดกิจกรรม หรอืสว่นของกิจกรรมขึ้นในตัว Object นัน้ ดังรูปตัวอยา่งของกิจกรรมของหลอดไฟ

66

รูปแสดงกิจกรรมที่เกิดขึ้นในหลอดไฟโดยใช ้ State และ Transition เป็นสื่อในการอธบิาย ดังน้ี

1. หลอดไฟจะเริม่ต้นกิจกรรมทัง้หมดที่ State หลอดยงัไมไ่ด้ติดตัง้

2. เมื่อได้รบัการติดตัง้แล้วหลอดไฟจะอยูใ่น State ปิด3. จากสถานะปิด เมื่อเกิด Transition Turn on Switch

ขึ้น หลอดไฟจะเปล่ียน State ไปยงั State เปิด4. แต่จาก State เปิด เมื่อได้รบั Transition Turn off

Switch หลอดไฟจะกลับมายงั State เปิดอีกครัง้ 5. หลังจากนัน้ State ของหลอดไฟจะเปล่ียน State ไปมาระ

หวา่ง State ปิด เปิด เชน่น้ีต่อไป–

สญัลักษณ์ท่ีใชใ้น State Diagram State สถานะของ Object แทนด้วย สีเ่หล่ียมมุมมน

สญัลักษณ์ท่ีใชใ้น State Diagram Transition แทนด้วย ลกูศร

ลากจาก state เริม่ต้นไปยงั state ท่ีต้องการเขยีนชื่อ Event บนลกูศร มรูีปแบบคือ

[Condition]/[Action]Condition คือ เง่ือนไขในการเขา้หรอืออกจาก stateAction คือ กิจกรรมท่ีทำาระหวา่งการเปล่ียน state

สญัลักษณ์ท่ีใชใ้น State Diagram Event (เหตกุารณ์) หมายถึง Message หรอื Signal ท่ีวตัถุได้รบั

Events อาจจะทำาใหส้ถานะของวตัถเุปล่ียนแปลง หรอืไมก่็ได้

67

สญัลักษณ์ท่ีใชใ้น 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

หมายถึง หากออก state น้ีใหแ้สดงขอ้ความ “Good Bye”

กิจกรรมที่ทำาเมื่อเกิดเง่ือนไขต่างๆขึ้นcondition/action

หมายถึง ขณะท่ียงัอยูใ่น state น้ีเมื่อเกิดเง่ือนไขใด ๆ ที่กำาหนดโดย condition ใหท้ำากิจกรรม action

เชน่ every 2 seconds/phone ringหมายถึง ทกุ ๆ 2 วนิาทีใหเ้สยีงโทรศัพท์ดัง 1 ครัง้

ตัวอยา่ง State Diagram การทำางานของลิฟต์

รูปแสดง State Diagram เพื่อจำาลองการทำางานของลิฟต์ โดยมเีง่ือนไขวา่ ไมว่า่ลิฟต์จะเคล่ือนท่ีไปยงัจุดหมายท่ีชัน้ใดก็ตาม ลิฟต์จะต้องเคล่ือนท่ีกลับมาอยูท่ี่ชัน้ 1 ตามเดิม (Idle) State Diagram น้ี อธบิายการทำางานของลิฟต์ได้ดังน้ี

1. เริม่ต้นที่ Initial State เมื่อมกีารเปิดสวติชข์องลิฟต์ ลิฟต์จงึเขา้สูส่ภาวะหยุดนิ่ง (Idle)

2. เมื่อมคีนต้องการที่จะขึ้น (Want Up) ลิฟต์จงึมกีารเคล่ือนท่ีขึ้น (Go up) ทำาใหลิ้ฟต์อยูใ่น

สภาวะเคล่ือนขึ้น (Move Up)

69

3. แต่ถ้ามคีนต้องการท่ีจะลง (Want Down) ลิฟต์จงึมกีารเคล่ือนที่ลง (Go Down) ทำาใหลิ้ฟต์อยู่

ในสภาวะเคล่ือนลง (Move Down) 4. สบืเน่ืองจากขอ้ 2 และ 3 เมื่อลิฟต์มาถึงชัน้ท่ีต้องการ (แต่

ไมใ่ชช่ัน้ท่ี 1 ซึ่งเป็นชัน้ล่างสดุ - floor < > 1) ลิฟต์จะอยูใ่นสถานะ Reach จนกวา่คนจะลง

จากลิฟต์จนหมด จงึเล่ือนลงมา (Go Down) ท่ีชัน้ที่ 1 แล้วกลับสูส่ภาวะ Idle อีกครัง้ 5. แต่จากขอ้ 3 ถ้าลิฟต์มาถึงชัน้ท่ี 1 แล้วจะ Idle ทันที 6. เมื่อลิฟต์อยูใ่นสภาวะ Idle เมื่อใดก็ตามท่ีมกีารปิดสวติช ์

(Turn Off) กิจกรรมทัง้หมดของลิฟต์จะหยุดทันที (การทำางานมาถึง Final State แล้ว) นัน่

หมายความวา่ลิฟต์จะถกูปิดได้ก็ต่อเมื่อลิฟต์อยูใ่นสภาวะ Idle เท่านัน้

จากการใช ้ 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 คือ

· Off (เครื่องปิด)· On (เครื่องเปิด)· Boot  (เครื่องกำาลังเริม่ทำางาน)· Ready (เครื่องพรอ้มทำางาน)· Reading (อ่านคำาสัง่จากหน่วยความจำา (Memory) )· Sending (สง่คำาสัง่ท่ีอ่านได้ไปยงั CPU)· Decoding (ถอดรหสัคำาสัง่โดย CPU)· Executing (ประมวลผลคำาสัง่ โดย CPU)· Buffering (เก็บผลลัพธจ์ากการประมวลผลไวใ้น Memory

ชัว่คราวเพื่อรอการประมวลผล เสรจ็สิน้)

72

· Output (การแสดง Output ออกทางอุปกรณ์แสดงผลต่างๆ)

· Storing Data (การเก็บผลลัพธจ์ากการประมวลผลไวใ้น MemoryState Diagram ของแต่ละ Method เป็นดังน้ี

Read Instruction (อ่านคำาสัง่จาก Memory) ในการอ่านคำาสัง่ใดๆ จาก Memory ของคอมพวิเตอรนั์น้จะเริม่ต้น

ใน State Ready ก่อน เมื่อมคีำาสัง่เขา้มาใน Memory แล้วตาม Transition Instruction Coming คอมพวิเตอรจ์ะเริม่เขา้ไปยงั State Reading ซึ่งจะอ่านคำาสัง่จาก Memory ทีละคำาสัง่ไปจนกวา่จะเสรจ็สิน้ (Reading Complete)

ซึ่งเมื่ออ่านเสรจ็แล้วคอมพวิเตอรจ์ะสง่คำาสัง่ท่ีอ่านได้ไปยงั CPU ดังระบุไวใ้น State Sending และคอมพวิเตอรจ์ะวนอยูใ่น State น้ี(ดังจะเหน็จาก Transition Sending not Complete) จนกวา่จะเสรจ็สิน้ จงึกลับเขา้ไปยงั State Ready

73

Decode (การถอดรหัสคำาสัง่) ในการถอดรหสัคำาสัง่ โดยไมต้่องมเีง่ือนไขใด ๆ คอมพวิเตอรจ์ะ

เปล่ียนจากสถานะ Ready มายงัสถานะ Decoding ซึ่งใน State น้ี คอมพวิเตอรจ์ะถอดรหสัคำาสัง่ทีละคำาสัง่จนกวา่จะหมด และเมื่อการถอดรหสัเสรจ็สิน้แล้ว (Decoding Complete) จงึกลับไปอยูใ่นสถานะ 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 มากนัก

แต่ที่สำาคัญคือต้องไมม่ ีState และ Transition ใดตกหล่นหรอืหายไป แล้วขัน้ตอนของ Design Phase นัน้ เราจะทำาใหS้tate Diagram มคีวามละเอียดมากขึ้นจนสามารถนำาไปสรา้งเป็นโปรแกรมได้ต่อไป

ตัวอยา่ง State Diagram

การชำาระเงิน

75

การทำางานของลิฟต์

การทำางานรโีมตควบคมุเครื่อง CD/DVD

State Diagram ใชอ้ธบิายการเปล่ียนแปลงจาก State หน่ึงไปยงัอีก State หน่ึง

สว่น Activity Diagram หรอืแผนภาพแสดงกิจกรรม ใชอ้ธบิายกิจกรรมที่เกิดขึ้นในลักษณะกระแสการไหลของการทำางาน (workflow)

Activity Diagram จะมลัีกษณะเดียวกับ Flowchart (แสดงขัน้ตอนการทำางานของระบบ) โดยขัน้ตอนในการทำางานแต่ละขัน้ตอนซึ่งเรยีกวา่ Activity

ใช ้Activity Diagram- อธบิาย กระแสการไหลของการทำางาน (workflow)- แสดงขัน้ตอนการทำางานของระบบ

Activity อาจเป็นการทำางานต่างๆ ได้แก่

76

การคำานวณผลลัพธบ์างอยา่งการเปล่ียนแปลงสถานะ (State) ของระบบการสง่ค่ากลับคืน การสง่สญัญาณการเรยีกให ้Operation (Method) อ่ืนๆเพื่อทำางานการสรา้ง หรอื ทำาลายวตัถุ

สญัลักษณ์ใน Activity Diagram

1.กิจกรรม (Activity)

2.เสน้ทางการไหลของกิจกรรม

กรณี Synchronization และ Join

กรณีมเีง่ือนไข

3. จุดเริม่ต้น

4. จุดสิน้สดุ

5. สวมิเลนส ์(SWIMLANES)

6. แสดงการไหลของอ็อบเจกต์ (Object Flow) ( ----> )

7.

ขัน้ตอนในการเขยีน Activity Diagram1. พจิารณากิจกรรมต่าง ๆ ท่ีได้จากผลการวเิคราะหท์ี่ควรอธบิาย

77

2. พจิารณากิจกรรมยอ่ยท่ีเกิดขึ้น เง่ือนไขหรอืกรณีต่าง ๆ ท่ีเกิดขึ้น เมื่อเป็นไป ตามเง่ือนไข3. เรยีงลำาดับกิจกรรมท่ีเกิดก่อนหลัง 4. เขยีนกิจกรรมยอ่ย ด้วยสญัลักษณ์แสดงกิจกรรม5. เขยีนจุดเริม่ต้น 6. เขยีนจุดสิน้สดุ

Activity Diagram จะต้องมจุีดเริม่ต้นและจุดสิน้สดุและระหวา่งจุดเริม่ต้นกับจุดสิน้สดุ ก็จะมขีัน้ตอนหรอื activity ต่าง ๆ ของระบบ ดังรูป

จุดเริม่ต้น

กิจกรรมของระบบงาน

จุดสิน้สดุ

รูปแบบการใช ้activity diagram มหีลายแบบได้แก่ 1. แบบทัว่ไป 2. แบบมทีางเลือกใหตั้ดสนิใจ 3. แบบท่ีมกีารทำางานพรอ้ม ๆ กันหลายงาน 4. แบบการสง่สญัญาณ

การสรา้งทางเลือกใน Activity Diagram สามารถทำาได้ 2 วธิคืีอ 1. ใชล้กูศรของแต่ละทางเลือกไปยงั activity ผลลัพธข์องทางเลือกโดยตรง

78

2. ใชล้กูศรของแต่ละทางเลือกผ่านรูปสีเ่หล่ียมขนมเปียกปูนก่อน

ตัวอยา่ง Activity Diagram ท่ีมทีางเลือก

ตัวอยา่ง Activity Diagram ของ ATM

79

การทำางานหลายๆงานพรอ้มกันใน Activity Diagramในกรณีท่ีเรามงีานหลายงานท่ีมกีารทำางานไปพรอ้มกัน จะใชเ้สน้ตรง

แนวนอนเสน้หนา มาเป็นสญัลักษณ์ที่ใชจ้ดักลุ่มงานที่มกีารทำาพรอ้ม ๆ กัน โดยมลัีกษณะดังรูป

ตัวอยา่ง Activity Diagram

Activity Diagram แสดงการสง่สญัญาณ ในกระบวนการทำางานอาจเป็นไปได้วา่จะมกีารสง่สญัญาณบางอยา่ง

ในระหวา่งการทำางาน เมื่อเกิดการสง่-รบัสญัญาณ เราก็จะเรยีกวา่เกิด Activity ขึ้นเชน่เดียวกัน

ในการเขยีน Activity Diagram สำาหรบัการสง่สญัญาณ จะใชรู้ปหลายเหล่ียมแทน Activity ท่ีมกีารสง่สญัญาณโดยท่ี

แทนเหตกุารณ์ท่ีเป็น input

80

แทนเหตกุารณ์ท่ีเป็น outputตัวอยา่ง แสดงการสง่สญัญาณ โดยระบบท่ีสนใจคือการกดปุ่มรโีมทคอนโทรลเพื่อเปล่ียนชอ่งโทรทัศน์

แบง่การทำางานให้เป็นสดัสว่นด้วย Swim lanes คณุลักษณะอีกอยา่งหน่ึงคือสามารถแสดงใหเ้หน็ได้วา่ใครเป็นผู้

มหีน้าท่ีรบัผิดชอบในแต่ละ activity ในกระบวนการทำางานหน่ึง ๆ หลักการของการแสดงหน้าที่ จะทำาโดยการแบง่กลุ่มของการรบัผิดชอบเป็นกลุ่มๆ ซึ่งเปรยีบเหมอืนการแขง่วา่ยนำ้า เรยีกกลไกน้ีวา่ Swim lanes ในแต่ละ swim lane จะมกีารกำาหนดชื่อกำากับเอาไว ้เชน่กระบวนการของการสัง่ซื้อสนิค้า เราอาจแบง่กลุ่มของคนที่มสีว่นเกี่ยวขอ้งเป็น 3 สว่น ได้แก่ ลกูค้า , ฝ่ายขาย และคลังสนิค้า

Activity หน่ึง ๆ จะอยูภ่ายใน 1 swim lane เท่านัน้ แต่การติดต่อหรอืสง่ผ่านระหวา่ง activity สามารถเกิดขึ้นขา้มจาก swim lane หน่ึงไปยงัอีก swim lane หน่ึงได้ ดังรูปต่อไป

81

ตัวอยา่ง

ตัวอยา่ง

ตัวอยา่ง

82

แผนภาพแสดงสถานะ (State Diagram)เป็นแผนภาพที่ใชแ้สดงสถานะของ Object ต่างๆในระบบวา่มสีถานะอะไรบา้งและจะเปล่ียนแปลงสถานะไปตามเหตกุารณ์ต่างๆ ท่ีเกิดขึ้น

แผนภาพแสดงกิจกรรม (Activity Diagram)เป็นแผนภาพที่แสดงกิจกรรมที่เป็นงานยอ่ยของ Object ในแต่ละ Use Case สญัลักษณ์ท่ีใชใ้นการแสดงกิจกรรมจะเป็นสีเ่หล่ียมแคปซูลและมเีสน้ลกูศรเพื่อแสดงลำาดับของกิจกรรมโดยมจุีดเริม่ต้นและจุดสิน้สดุเชน่เดียวกับแผนภาพแสดงสถานะ

แบบฝึกหัด

83

1. จงเขยีน state diagram รถเด็กเล่นชนิดหน่ึง เมื่อเปิดสวติซจ์ะวิง่ไปมาแต่เมื่อมาเจอขอบของวตัถเุชน่ขอบโต๊ะซึ่งอาจจะทำาใหม้นัหล่นลงพื้นได้ มนัจะหยุดและจะเล้ียวซา้ยแต่ถ้าเล้ียวซา้ยแล้วเจอสิง่กีดขวางจะเล้ียวขวาแทนแต่ถ้าไปไมไ่ด้จะถอยหลังและในที่สดุถ้าถอยหลังไมไ่ด้มนัจะปิดสวติซต์นเองโดยอัตโนมติั

2. จงเขยีน state diagram ของก๊อกนำ้าอัตโนมติั ต่อไปน้ีเมื่อมสีิง่กีดขวาง เชน่ มอืรองอยูใ่ต้ก๊อกนำ้า เป็นเวลา 5 วนิาที ก๊อกนำ้าจำาปล่อยนำ้าออกมา เมื่อนำาสิง่กีดขวางออก นำ้าจะหยุดไหลทันที ถ้าไมน่ำาสิง่กีดขวางออกภายใน 20 วนิาทีหลังจากนำ้าไหล ก๊อกนำาจะหยุดปล่อยนำ้าเป็นเวลา 5 วนิาที แล้วยงัคงมสีิง่กีดขวางอยู ่นำ้าจะเริม่ไหลใหมแ่ละจะเป็นแบบน้ีไปเรื่อยๆจนกวา่จะนำาสิง่กีดขวางออก