State Diagram - มหาวิทยาลัยบูรพา วิทยาเขตจันทบุรี
Download
Report
Transcript State Diagram - มหาวิทยาลัยบูรพา วิทยาเขตจันทบุรี
290353 Object-Oriented
Analysis and Design
บทที่ 6
การออกแบบการเปลีย่ นสถานะของวัตถุ
ด้ วย State Diagram
อ.ธารารัตน์ พวงสุ วรรณ
คณะวิทยาศาสตร์ และศิลปศาสตร์
มหาวิทยาลัยบูรพา วิทยาเขตสารสนเทศจันทบุรี
เนื้อหา
State และ Transition
State Diagram
หลักการในการเขียน State Diagram
2
ประเภทของไดอะแกรมใน UML
Class diagram
Object diagram
Static diagram
Sequence diagram
Collaboration diagram
Requirement Capturing Dynamic diagram
Use case diagram
Component diagram
Deployment diagram
Statechart diagram
Activity diagram
UML has 9 kinds of diagrams
Class Diagram
Object Diagram
Component Diagram
Deployment Diagram
Use Case Diagram
Sequence Diagram
Collaboration Diagram
StateTransition Diagram
Activity Diagram
Structural Diagrams
Behavioral Diagrams
Behavioral Diagrams
Behavioral Diagrams เป็ นโครงสร้ างแบบ dynamic
4 diagrams ได้ แก่
Sequence Diagram
Interaction Diagrams
Collaboration Diagram
State-transition Diagram
Activity Diagram
State diagram
ใช้เพื่อแสดงกิจกรรมใน function ต่าง ๆ ของ class แต่ละตัว
แสดงพฤติกรรมของวัตถุใดๆ วัตถุหนึ่งที่สร้างขึ้นจากคลาส
แสดงสถานะ (states) ทั้งหมดที่เป็ นไปได้ของวัตถุ
แสดงการเปลี่ยนแปลงสถานะของวัตถุ ที่เป็ นผลจาก message ที่
วัตถุน้ นั ได้รับ
ชื่ออื่นๆ ของ State Diagram ได้แก่
State transition diagram
Harel diagram (statecharts)
State และ Transition
• การทางานของระบบงานต่างๆ ไม่วา่ จะเป็ นระบบภายในคอมพิวเตอร์ หรื อระบบใน
โลกของความเป็ นจริ งก็ตาม สิ่ งที่ เคลื่ อนไหวหรื อการเปลี่ ยนแปลงใดๆ ที่ เกิ ดขึ้ นใน
ระบบนั้น เรี ยกว่า กิจกรรม(Activity)
• กิ จ กรรมเกิ ด ขึ้ น จาก Objects หรื อ วัต ถุ ต่ า งๆ ในระบบกระท าต่ อ กัน สิ่ ง ที่ ใ ช้เ พื่ อ
บรรยายกิจกรรมโดยรวมที่เกิดขึ้นในระบบก็คือ Sequence Diagram
• เมื่อพิจารณาเข้าไปในรายละเอียดของกิจกรรมที่เกิดขึ้นจะพบว่า กิจกรรมโดยรวมของ
ระบบเกิดจากกิจกรรมย่อยของ Object แต่ละตัวรวมกัน
State และ Transition
• กลไกที่ทาให้ระบบมีกิจกรรมก็คือ การส่ ง Message หรื อในทาง Object Orientation ก็
คือ การเรี ยกใช้ Function ของ Object นัน่ เอง
•กิจกรรมที่เกิดขึ้นใน Object เกิดจาก 2 สิ่ งประกอบกัน คือ
• สถานะ (State)
• การเปลี่ยนสถานะ (Transition)
• การที่ Object ใดๆ เปลี่ยนจาก State ที่ 1 ไปยัง State ที่ 2 จะทาให้เกิดกิจกรรม หรื อ
ส่ วนของกิจกรรมขึ้นในตัว Object นั้น
Object states
สถานะ (State)
= ชุดของค่ าที่ บ่ งบอกถึง วัตถุ (รวมทั้ง condition และ
situation ของวัตถุ) ที่เวลาใดเวลาหนึ่ง
สถานะถูกกาหนดโดยค่ าของ attribute ในวัตถุ
Account
overdrafted
states
balance : Float
ok
State changes (1)
สถานะอาจเปลีย่ นแปลง เมื่อมีเหตุการณ์ (event) เกิดขึน้ กับวัตถุ
State transition
หมายถึงความสั มพันธ์ ทรี่ ะบุการเปลีย่ นแปลงของสถานะ
overdrafted
withdraw(sum)
deposit(sum)
ok
State changes (2)
เหตุการณ์ (Events)
deposit
หมายถึง Message หรือ
signal ทีว่ ตั ถุได้ รับ
Events อาจจะทาให้ สถานะ
ของวัตถุเปลีย่ นแปลง
หรือไม่ กไ็ ด้
Self-transition
overdrafted
withdraw
deposit
withdraw
ok
State และ Transition แสดงการทางานของหลอดไฟ
Turn On Switch
หลอดยัง
ไม่ได้ ติดตั ้ง
ติดตั ้ง
ปิ ด
เปิ ด
Turn Off Switch
State และ Transition
การทางานของหลอดไฟ (ต่อ)
1. หลอดไฟจะเริ่ มต้นกิจกรรมทั้งหมดที่ State หลอดยังไม่ ได้ ติดตั้ง
2. เมื่อได้รับการติดตั้งแล้วหลอดไฟจะอยูใ่ น State ติด
3. จากสถานะปิ ด เมื่อเกิด Transition Turn On Switch ขึ้น หลอดไฟจะ
เปลี่ยน State ไปยัง State เปิ ด
4. แต่จาก State เปิ ด เมื่อได้รับ Transition Turn Off Switch หลอดไฟจะ
กลับมายัง State ปิ ด อีกครั้ง
5. หลังจากนั้น State ของหลอดไฟจะเปลี่ยน State ไปมาระหว่าง State ปิ ดเปิ ด เช่นนี้ต่อไป
13
สัญลักษณ์ State
แทนด้วย สี่ เหลี่ยมมุมมน
ระบุชื่อของ state ลงในสี่ เหลี่ยม
เช่น การเขียน State Idle
Idle
สัญลักษณ์ Transition
แทนด้วย ลูกศร
ลากจาก state เริ่ มต้นไปยัง state ที่ตอ้ งการ
ใส่ ชื่อ transition บนลูกศร มีรูปแบบคือ
[Condition]/[Action]
Condition คือ เงื่อนไขในการเข้าหรื อออกจาก state
Action คือ กิจกรรมที่ทาระหว่างการเปลี่ยน state
** ทั้งนี้ในลูกศรจะมี Condition หรื อ Action หรื อไม่มีกไ็ ด้ แต่ตอ้ งมีตวั ใดตัว
หนึ่งเป็ นอย่างน้อย **
สัญลักษณ์จุดเริ่ มต้น
จุดเริ่ มต้นของกิจกรรมต่าง ๆ ใน state diagram เรี ยกว่า
initial state
แทนด้วยวงกลมทึบ
สัญลักษณ์จุดสิ้ นสุ ด
จุดสิ้ นสุ ดของกิจกรรมทั้งหมดเรี ยกว่า End state
แทนด้วยวงกลมใส ล้อมรอบวงกลมทึบ
ตัวอย่าง State Diagram
State Diagram การทางานของลิฟต์
/Turn Off
/Turn On
Idle
Want Up/Go Up
Move Up
Floor=1
Floor>1/Go
Want Down / Go Down Down
Desired Floor reached
Move Down
Floor<>1
& Desired Floor
reached
Reach
State Diagram การทางานของลิฟต์ (ต่ อ)
1. เริ่ มต้ นที่ Initial State เมื่อมีการเปิ ดสวิตช์ ของลิฟต์ ลิฟต์ จึงเข้ าสู่ สภาวะหยุดนิ่ง (Idle)
2. เมื่อมีคนต้ องการที่ จะขึน้ (Want UP) ลิฟต์ จึงมีการเคลื่อนที่ ขึน้ (Go Up) ทาให้ ลิฟต์ อยู่
ในสภาวะเคลื่อนที่ขึน้ (Move Up)
3. แต่ ถ้ามีคนต้ องการที่ จะลง (Want Down) ลิฟต์ จึงมีการเคลื่อนที่ ลง (Go Down) ทาให้
ลิฟต์ อยู่ในสภาวะเคลื่อนที่ลง (Move Down)
State Diagram การทางานของลิฟต์ (ต่ อ)
4. สื บ เนื่ อ งจากข้ อ 2 และ 3 เมื่ อ ลิ ฟต์ ม าถึ งชั้ นที่ ต้อ งการ (แต่ ไม่ ใช่ ชั้ นที่ 1 ซึ่ งเป็ นชั้ น
ล่ างสุ ด หรื อ floor<>1) ลิฟต์ จะอยู่ในสถานะ Reach จนกว่ าคนจะลงจากลิฟต์ จน
หมด จึ งเลื่อนลงมา (Go Down) ที่ชั้นที่ 1 แล้ วกลับมาสู่ สภาวะ Idle อีกครั้ ง
5. แต่ จากข้ อ 3 ถ้ าลิฟต์ มาถึงชั้นที่ 1 แล้ วจะมาหยุดอยู่ที่สภาวะ Idle ทันที
6. เมื่อลิฟต์ อยู่ในสภาวะ Idle เมื่อใดก็ตามที่ มีการปิ ดสวิตช์ (Turn Off) กิจกรรมทั้งหมด
ของลิฟต์ จะหยุดทันที (การทางานมาถึง Final State แล้ ว) นั่นหมายความว่ าลิฟต์ จะถูก
ปิ ดได้ กต็ ่ อเมื่อลิฟต์ อยู่ในสภาวะ Idle เท่ านั้น
การจาลองกิจกรรมภายใน state
การจาลองกิจกรรมภายใน State (Internal Activity) เป็ นการระบุ
รายละเอียดในการทางานของ State ต่างๆ เพื่อให้เห็นภาพของกิจกรรม
ได้ชดั เจนขึ้น
กิจกรรมภายใน State ประกอบด้วย
Entry/Action : กิจกรรมที่ทาเมื่อเข้ามาใน state
Do/Action : กิจกรรมที่ทาระหว่างอยูใ่ น state
Exit/Action : กิจกรรมที่ทาก่อนที่จะออกจาก state
Conditional/Action : กิจกรรมที่ทาเมื่อเกิดเงื่อนไขต่าง ๆ ขึ้น
กิจกรรมที่ทาเมื่อเข้ามาใน state
entry/action
หมายถึง เมื่อเข้ามายัง state นี้ให้ทากิจกรรม action
เช่น entry/count=0
หมายถึง เมื่อเข้ามายัง state ให้ค่า count เป็ น 0
กิจกรรมที่ทาระหว่างอยูใ่ น state
do/action
หมายถึง หลังจากเข้ามายัง state นี้แล้ว หากไม่มีเงื่อนไขอื่นใด ให้ทา
กิจกรรม action
เช่น 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 การทางานของลิฟต์
ซึ่ งมี Internal Activity
26
อธิบายแต่ละ State ในการทางานของลิฟต์
Idle หมายถึง State ของลิฟต์ เมื่อยังอยูท่ ี่ช้ นั ที่ 1 ซึ่ งเมื่อใดก็ตามที่เข้ามายัง State นี้
ค่า Floor จะถูก Set ไว้ที่ 1 เสมอ
Move Down หมายถึง State ของลิฟต์ ที่มีการเคลื่อนที่ลงทีละชั้น โดยเมื่อใดก็
ตามที่เข้ามายัง State นี้ ค่า Floor จะลดลงทีละ 1 และเมื่อใดก็ตามที่ Floor มีค่าเป็ น
1 ให้หลุดลิฟต์ทนั ที ซึ่ งการหยุดลิฟต์ที่ Floor เท่ากับ 1 นั้นเท่ากับเป็ นการบังคับให้
ลิฟต์เข้ามาอยูใ่ นสถานะ Idle โดยปริ ยาย
Move Up หมายถึง State ของลิฟต์ ที่มีการเคลื่อนที่ข้ ึนทีละชั้น โดยเมื่อใดก็ตามที่
เข้ามายัง State นี้ ค่า Floor จะเพิม่ ขึ้นทีละ 1 และเมื่อใดก็ตามที่ Floor มีค่าเป็ น
Max ซึ่ งหมายถึงลิฟต์อยูใ่ นชั้นสู งสุ ด ให้ลิฟต์หยุดทันที
Reach หมายถึง State ที่ลิฟต์มายังขั้นที่กาหนด (มีคนต้องการขึ้นหรื อลงจากลิฟต์)
ซึ่ งเมื่อใดก็ตามที่เข้ามายัง State นี้แล้ว ต้องหยุดลิฟต์ทนั ที
27
วัตถุดบิ ทีน่ ามาใช้ ในการสร้ าง State Diagram
Class Diagram
จะทาให้เห็นภาพของ Class แต่ละ Class เพราะแต่ละ Operation
ของ Class จะหมายถึง State Diagram หนึ่งชุด ในขณะที่ Attributes
มักจะเป็ นตัวที่ถูกทาให้เปลี่ยนไปในกรณี ใดรู ปแบบใดรู ปแบบหนึ่ง
Sequence Diagram
จะทาให้เห็นภาพกิจกรรมของ Class ซึ่งจะใช้โต้ตอบกับ Class อื่นๆ
ใน Problem Domain ซึ่งมีส่วนช่วยในการพิจารณาแนวการดาเนิน
ไปของการเปลี่ยน State ของ Class หนึ่งๆ
28
หลักการในการเขียน State Diagram
1. จาก Class Diagram ให้ดูวา่ มี State Diagram กี่ตวั ที่ตอ้ งเขียนบ้าง ซึ่งปกติ
แล้วจะเท่ากับจานวนของ Function ของแต่ละ Class รวมกัน
2. ไม่จาเป็ นที่จะต้องเขียน State Diagram ของทุกๆ Function ของทุกๆ
Class Diagram ก็ได้
3. ในบาง Function ที่ไม่ได้มีกิจกรรมที่ซบั ซ้อนมากมาย ก็ไม่จาเป็ นต้องมี
State Diagram ก็ได้
4. ในแต่ละ Class ให้พิจารณาว่า จะมี State อะไรบ้าง (โดยยึดจากหลักการ
ของความเป็ นจริ ง) โดยยังไม่ตอ้ งคานึงถึงว่ามี Function อะไรอยูบ่ า้ ง
5. จาก State ที่มีอยูใ่ ห้เขียน State Diagram ของแต่ละ Function
29
หลักการในการเขียน State Diagram (ต่ อ)
6. พบว่ามี State ใดที่จะต้องเพิ่ม เพื่อให้ State Diagram สมบูรณ์ข้ ึน ให้เพิ่ม
เข้าไป
7. ทาซ้ าข้อ1 – 6 จนครบทุกๆ Class ใน Class Diagram
30
ตัวอย่างที่ 2 การเขียน State Diagram ของ Function
ต่างๆ ของ Class “Computer”
Computer
- Power Status
# Turn On
# Shut Down
# Read Instruction
# Decode
# Execute
# Store Data
31
State ที่ควรจะมีของ Class Computer
Off (เครื่ องปิ ด)
On (เครื่ องเปิ ด)
Boot (เครื่ องกาลังเริ่ มทางาน)
Ready (เครื่ องพร้อมทางาน)
Reading (อ่านคาสั่งจากหน่วยความจา)
Sending (ส่ งคาสัง่ ที่อ่านไปยัง CPU)
Decoding (ถอดรหัสคาสั่งโดย CPU)
Executing (ประมวลผลคาสัง่ โดย CPU)
Buffering (เก็บผลลัพธ์จากการประมวลผลไว้ในหน่วยความจาชัว่ คราวเพื่อรอการ
ประมวลผลเสร็ จสิ้ น)
Output (การแสดง Output ออกทางอุปกรณ์แสดงผลต่างๆ)
Storing Data (การเก็บผลลัพธ์จากการประมวลผลไว้ในหน่วยความจา)
32
State Diagram ของ Turn On
33
State Diagram ของ Turn On
• การเปิ ดเครื่ องคอมพิ วเตอร์ เริ่ มต้ นที่ เครื่ องคอมพิ วเตอร์ ที่ อยู่ใน
State Off ได้ รับการเปิ ด (Switch is turned on)
• จึ งทาให้ คอมพิวเตอร์ เปลี่ยนไปอยู่ที่ State On และเมื่อเปิ ดเครื่ อง
เสร็ จเรี ยบร้ อย การ Boot จึ งเกิดขึน้
• จนทาให้ คอมพิวเตอร์ มาอยู่ที่ State Boot และเมื่อ Boot เสร็ จ
เรี ยบร้ อยแล้ ว เครื่ องคอมพิวเตอร์ จึ งมาอยู่ใน State Ready ซึ่ งรอ
รั บคาสั่งและพร้ อมจะทางานต่ อไป
State Diagram ของ Shut Down
35
State Diagram ของ Shut Down
• การปิ ดเครื่ องคอมพิวเตอร์ คือ การเปลี่ยน State จาก Ready ซึ่ งไม่ มีการ
ทางานใดๆ ไปยัง State Off
• ซึ่ งการจะเปลี่ยน State เช่ นนีไ้ ด้ ต้องใช้ Transition การปิ ดเครื่ อง (Switch
is turned off)
State Diagram ของ Read Instruction
37
State Diagram ของ Read Instruction
• การอ่ านคาสั่ งใดๆ จากหน่ วยความจาของคอมพิวเตอร์ นั้นจะเริ่ มต้ นใน
State Ready ก่ อน
• เมื่ อมี คาสั่ งเข้ ามาในหน่ วยความจาแล้ วตาม Transition Instruction
Coming คอมพิวเตอร์ จะเริ่ มเข้ าไปยัง State reading ซึ่ งจะอ่ านคาสั่งจาก
Memory ทีละคาสั่งไปจนกว่ าจะเสร็ จสิ ้น (Reading Complete)
• ซึ่ งเมื่ออ่ านเสร็ จแล้ ว คอมพิวเตอร์ จะส่ งคาสั่ งที่ อ่านได้ ไปยัง CPU ดัง
ระบุไว้ ใน State Sending และคอมพิวเตอร์ จะวนอยู่ใน State นี ้ (ดังจะ
เห็นจาก Transition Sending not Complete) จนกว่ าจะเสร็ จสิ ้น จึ งกลับ
เข้ าไปยัง State Ready
State Diagram ของ Decode
39
State Diagram ของ Decode
• การถอดรหั สคาสั่ง โดยไม่ ต้องมีเงื่อนไขใดๆ คอมพิวเตอร์ จะเปลี่ยนจาก
สถานะ Ready มายังสถานะ Decoding
• ซึ่ งใน State นี ้ เครื่ องคอมพิวเตอร์ จะถอดรหั สคาสั่งทีละคาสั่งจนกว่ าจะ
หมด
• และเมื่อการถอดรหั สเสร็ จสิ ้นแล้ ว (Decoding Complete) จึ งกลับไปอยู่
ในสถานะ Ready เพื่อรอคาสั่งใหม่ ต่อไป
State Diagram ของ Execute
41
State Diagram ของ Execute
• การประมวลผลทางคอมพิ วเตอร์ จะเริ่ มต้ นที่ State Ready แล้ วเข้ าไปยัง State
Executing ซึ่ งจะวนอยู่ใน State นีจ้ นกระทั่งคาสั่ งถูกประมวลผลเสร็ จสิ ้น
• ซึ่ ง การประมวลผลเสร็ จ สิ ้ น นั้ น แบ่ ง ออกเป็ น 2 แบบคื อ การประมวลผลค าสั่ ง
เกี่ยวกับ Memory และการประมวลผลทาง Input/Output
• การเสร็ จสิ ้นการประมวลผลทาง Memory นั้นคอมพิวเตอร์ จะย้ ายกลับไปยัง State
Ready ในขณะที่ เมื่อการประมวลทาง Input/Output เสร็ จสิ ้น คอมพิวเตอร์ จะย้ าย
ไป state Buffering ซึ่ งเป็ นการบันทึ กผลการประมวลผลไว้ ใน Memory เพื่อรอการ
นาออกไปยังอุปกรณ์ Output
• หลังจากที่ การทา Buffering เสร็ จเรี ยบร้ อย จะเข้ าไปยัง State Output ซึ่ งเมื่อเข้ าไป
ยัง State นี ้ จะนาผลที่ ได้ ออกทางอุ ป กรณ์ และเมื่ อการนาข้ อ มูลออกแสดงทาง
อุปกรณ์ Output แล้ วจึ งกลับมาสู่ State Ready ตามเดิม
State Diagram ของ Store Data
43
State Diagram ของ Store Data
• การ Store Data เริ่ มต้ นที่ State Ready แล้ วเข้ าสู่ State Storing Data
• ซึ่ งจะบันทึ กข้ อมูลลงใน Memory จนกว่ าจะครบถ้ วนในทุกๆ หน่ วย
ข้ อมูล หลังจากนั้นจึงกลับเข้ าสู่ State Ready ตามเดิม
ข้ อควรคานึงในการเขียน State Diagram
• ข้ อควรคานึงในการเขียน State Diagram ใน Analysis Phase คือ
• ต้ องเขียน State ให้ ครบในภาพรวมทั้งหมดก่ อน โดยยังไม่ ต้อง
คานึงถึงรายละเอียดของแต่ ละ State และ Transition มากนัก
• แต่ ที่สาคัญคือต้ องไม่ มี State และ Transition ใดตกหล่ น หรื อหายไป
Triggering an Event
การกระตุ้นให้ เกิดการเปลีย่ นแปลงสถานภาพ (Triggering an
Event) และ การเปลีย่ นแปลงสถานภาพ โดยไม่ มีเหตุการณ์ เข้ า
ไปกระตุ้น (Triggerless Event)
Turn PC On
Initializing
Working
do : startup
Select Shut
Down
Shutting
Down
Guard Condition
การเปลีย่ นแปลงสถานภาพด้ วยเงื่อนไขทางตรรกะ ทาได้ โดยอาศัย
Guard Condition
Guard Condition หมายถึง ลักษณะการกาหนดเงื่อนไขทางตรรกะ
บางอย่ าง เช่ น อาจใช้ ระยะเวลาเป็ นตัวกาหนด เป็ นต้ น
Turn PC On
Initializing
[is time out]
Working
do : startup
Select Shut
Down
Shutting
Down
Keypressed
or
mouse
movement
Screen
Saving
Example : State transitions for an order
Item received
[ not all items checked ]
/ get next item
/ get first item
Checking
[someitems not in
stock ]
[ All items checked
&& some items not
in stock]
do : check item
[ All items checked
&& all items
availables ]
Dispatching
do : initiate delivery
Waiting
Item received
[ all items available]
Delivered
Delivered
Transitions to “cancelled”
[ not all items checked ]
/ get next item
/ get first item
Checking
do: check
item
[ All items
checked && all
items available ]
Item received [ some
items not in stock ]
[ All items checked &&
some items not in stock ]
cancelled
Item received [ all
items available ]
Waiting
cancelled
Dispatching
do: initiate delivery
Delivered
Delivered
cancelled
Cancelled
SubState
สถานะการทางานย่อย (SubState) แบ่งเป็ น 2 ประเภท คือ
Sequential เป็ นการเปลี่ยนสถานะการทางานอย่างเป็ นลาดับ
จากสถานะหนึ่ง ไปสู่อีกสถานะหนึ่ง
Concurrent มีหลายๆ สถานะที่มีการเปลี่ยนแปลงพร้อมๆ
กัน
Sequential SubState
Sequential SubState
เป็ นการเปลีย่ นสถานะการทางานอย่ างเป็ นลาดับ จากสถานะหนึ่ง
ไปสู่ อกี สถานะหนึ่ง
Working
Awaiting
User Input
Input
Registering
User Input
Visualizing
User Input
Concurrent SubState
Concurrent SubState
มีหลาย ๆ สถานะที่มีการเปลีย่ นแปลงพร้ อมๆ กัน
Example: Payment authorization in class
Order
2 parallel processes:
- authorization
- order handling
Authorizing
[ payment not ok ]
do: check payment
[ payment ok ]
Authorized
Delivered
Rejected
Concurrent state diagram for the class
Order
Cancelled
Waiting
Checking
Dispatching
Delivered
Authorizing
Authorized
Rejected
State diagram notation (4)
Superstate
Event A
State-A
Event B
Composite state:
ประกอบด้วย Sequential substates
State-B
Event C
Superstate / Substates
Active
[ not all items checked ]
/ get next item
/ get first item
Checking
do : check item
[ All items checked
&& all items
availables ]
Item received
[someitems
not in stock ]
[ All items
checked &&
some items
not in stock]
cancelled
Cancelled
Waiting
Item received
[ all items available]
Dispatching
do : initiate delivery
Delivered
Delivered