คำถามยอดนิยม
ไทมไลน์
แชท
มุมมอง
แผนภาพสถานะ
จากวิกิพีเดีย สารานุกรมเสรี
Remove ads
แผนภาพแสดงสถานะ หรือ สเตตไดอะแกรม (state diagram) ใช้เพื่อแสดงสถานะของวัตถุ รวมไปถึงเหตุการณ์ต่าง ๆ ที่สามารถทำให้สถานะของวัตถุนั้นเปลี่ยนแปลงไปและการกระทำที่เกิดขึ้นเมื่อสถานะของระบบเปลี่ยนไป สามารถบอกสถานะของวัตถุได้ โดยใช้หลักการให้ความสนใจ ณ เวลาต่าง ๆ กันนั้น วัตถุจะมีสถานะเป็นแบบใดบ้าง
![]() | บทความนี้หรือส่วนนี้ของบทความต้องการปรับรูปแบบ ซึ่งอาจหมายถึง ต้องการจัดรูปแบบข้อความ จัดหน้า แบ่งหัวข้อ จัดลิงก์ภายใน และ/หรือการจัดระเบียบอื่น ๆ คุณสามารถช่วยแก้ไขปัญหานี้ได้โดยการกดที่ปุ่ม แก้ไข ด้านบน จากนั้นปรับปรุงหรือจัดรูปแบบอื่น ๆ ในบทความให้เหมาะสม |

การเขียน State Diagram เพื่อการทำ Object Oriented Analysis and Design นั้นจะแทนด้วยสัญลักษณ์ สี่เหลี่ยมมุมมน ซึ่งแทน State โดยมีชื่อของ State ระบุอยู่ และจะใช้เครื่องหมายลูกศรเพื่อแทน Transition โดยลากจาก State เริ่มต้นไปยัง State ที่ต้องการ โดยบนลูกศรจะมีชื่อของ Transition หรือกิจกรรมกำกับอยู่ด้วย การเขียนชื่อของกิจกรรมกำกับบนลูกศร มีรูปแบบดังนี้
โดยที่
- Condition หมายถึง เงื่อนไขในการเข้าหรือออกจาก State
- Action หมายถึง กิจกรรมที่ทำระหว่างการเปลี่ยน State
- ทั้งนี้ในลูกศรจะมี Condition หรือ Action หรือไม่มีก็ได้ แต่ต้องมีตัวใดตัวหนึ่งเป็นอย่างน้อย
- จุดเริ่มต้นของกิจกรรมต่าง ๆ ใน State diagram เรียกว่า Initial state
- จุดสิ้นสุดของกิจกรรมทั้งหมดใน State diagram เรียกว่า End State
Remove ads
หลักในการเขียน State Diagram ให้มีประสิทธิภาพ
- จาก Class Diagram ดูว่ามีจำนวนของ State Diagram กี่ตัวที่ต้องเขียน ปกติจะเท่ากับจำนวน Function ของแต่ละ Class รวมกัน
- ไม่จำเป็นที่จะต้องเขียน State Diagram ของทุก ๆ Function ของทุก ๆ Class Diagram ก็ได้
- ในบาง Function ที่กิจกรรมไม่ซับซ้อนมากมาย ไม่จำเป็นต้องมี State Diagram
- ให้พิจารณาว่าในแต่ละ Class จะมี State อะไรบ้าง (โดยยึดจากหลักการของความเป็นจริง) ไม่ต้องคำนึงว่ามี Function อะไรอยู่
- จาก State ที่มีอยู่ให้เขียน State Diagram ของแต่ละ Function
- เพิ่ม state ที่จำเป็นเพิ่มเติม เพื่อให้ state diagram สมบูรณ์ยิ่งขึ้น
- ทำจนกว่าจะได้ State Diagram ของ 1 Class ที่สมบูรณ์
- ทำซ้ำจนครบทุก ๆ Class ใน Class Diagram
Remove ads
Moore Model
สรุป
มุมมอง
การเขียน State Diagram ของ Moore จะใช้ตัวอักษรและตัวเลขเขียนอยู่ในวงกลม โดยที่ตัวอักษรแสดงถึง State ตัวเลขแสดงถึง Output เช่น W/0 หมายความว่า ที่ State W ที่เวลาใด ๆ ถ้าได้รับ Input แล้ววงจรจะเชื่อมด้วยเส้นตรงหรือเส้นโค้งมีหัวลูกศรกำกับและแต่ละเส้นที่เชื่อมกันก็ยังมีตัวเลขอีกชุด แสดงถึงการป้อน Input กำกับไว้ด้วย
Moore Model ใช้ในกรณีที่ Output ของวงจรไม่ได้ขึ้นอยู่กับ Input แต่จะขึ้นอยู่กับ Present State เท่านั้น ดังนั้น State table และ State Diagram ตามแบบของ Moore จะแตกต่างกับแบบของ Mealy
จากรูปคือ
ถ้าให้ State W เป็น Present State และวงจรได้รับ Input X=0 แล้ว Next State ของวงจรเป็น State Y และให้ Output Z=0 แต่ถ้าวงจรได้รับ Input X=1 แล้ว Next State ของวงจรเป็น State X และให้ Output Z=0
ถ้าให้ State X เป็น Present State และวงจรได้รับ Input X=0 แล้ว Next State ของวงจรจะคงอยู่ที่ State X และให้ Output Z=1 แต่ถ้าวงจรได้รับ Input X=1 แล้ว Next State ของวงจรเป็น State Yและให้ Output Z=1
ถ้าให้ State Y เป็น Present State และวงจรได้รับ Input X=0 แล้ว Next State ของวงจรเป็น State X และให้ Output Z=0 แต่ถ้าวงจรได้รับ Input X=1 แล้ว Next State ของวงจรเป็น State W และให้ Output Z=0
ข้อดี
Output ไม่เปลี่ยนตาม Input ทำให้ไม่เกิดปัญหา momntary change หรือ Glitch
ข้อเสีย
ใช้จำนวนสภาวะมากกว่าในการออกแบบวงจรชนิดเดียวกัน
Remove ads
อ้างอิง
- State diagram เก็บถาวร 2011-11-05 ที่ เวย์แบ็กแมชชีน
แหล่งข้อมูลอื่น
วิกิมีเดียคอมมอนส์มีสื่อที่เกี่ยวข้องกับ แผนภาพสถานะ
- Introduction to UML 2 State Machine Diagrams by Scott W. Ambler
- UML 2 State Machine Diagram Guidelines by Scott W. Ambler
- Intelliwizard - UML StateWizard - A discontinued round-trip UML dynamic modeling/development framework and tool that ran in popular IDEs under an open-source license.
- YAKINDU Statechart Tools - an Open-Source-Tool for the specification and development of reactive, event-driven systems with the help of state machines.
- Understanding and Using State Machines เก็บถาวร 2016-06-14 ที่ เวย์แบ็กแมชชีน MATLAB Tech Talks on State Machines
- FSM: Open Source Finite State Machine Generation in Java by Alexander Sakharov FSM เก็บถาวร 2016-03-03 ที่ เวย์แบ็กแมชชีน
- scxmlcc An efficient scxml state machine to C++ compiler.
- SMC: An Open Source State Machine Compiler that generates FSM for many languages as C, Python, Lua, Scala, PHP, Java, VB, etc. SMC
Remove ads
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads