Ò»¡¢×´Ì¬Í¼¼ò½é£¨Brief
introduction£©
״̬ͼ£¨Statechart Diagram£©Ö÷ÒªÓÃÓÚÃèÊöÒ»¸ö¶ÔÏóÔÚÆäÉú´æÆÚ¼äµÄ¶¯Ì¬ÐÐΪ£¬±íÏÖΪһ¸ö¶ÔÏóËù¾ÀúµÄ״̬ÐòÁУ¬ÒýÆð×´Ì¬×ªÒÆµÄʼþ£¨Event£©£¬ÒÔ¼°Òò×´Ì¬×ªÒÆ¶ø°éËæµÄ¶¯×÷£¨Action£©¡£Ò»°ã¿ÉÒÔÓÃ״̬»ú¶ÔÒ»¸ö¶ÔÏóµÄÉúÃüÖÜÆÚ½¨Ä££¬×´Ì¬Í¼ÓÃÓÚÏÔʾ״̬»ú£¨State
Machine Diagram£©£¬ÖصãÔÚÓëÃèÊö״̬ͼµÄ¿ØÖÆÁ÷¡£
ÈçÏÂͼÀý×Ó£¬×´Ì¬»úÃèÊöÁËÃŶÔÏóµÄÉú´æÆÚ¼äµÄ״̬ÐòÁУ¬ÒýÆð×ªÒÆµÄʼþ£¬ÒÔ¼°Òò×´Ì¬×ªÒÆ¶ø°éËæµÄ¶¯×÷£¨Action£©.

״̬ÓÐOpened¡¢Closed¡¢Locked¡£
ʼþÓÐ Open¡¢Close¡¢LockºÍUnlock¡£
×¢Ò⣺
1¡¢ ²¢²»ÊÇËùÓеÄʼþ¶¼»áÒýÆð״̬µÄ×ªÒÆ£¬±ÈÈçµ±ÃÅÊÇ´¦ÓÚ¡¾Opened¡¿×´Ì¬£¬²»ÄܽøÐС¾Lock¡¿Ê¼þ¡£
2¡¢ ×ªÒÆ£¨Transition£©Óо¯±¸Ìõ¼þ£¨guard condition£©£¬±ÈÈçÖ»ÓÐdoorWay->isEmpty
Ìõ¼þÂú×ãʱ£¬²Å»áÏìӦʼþ¡£
¶þ¡¢×´Ì¬Í¼ÔªËØ£¨State Diagram Elements£©
1¡¢×´Ì¬£¨States£©
Ö¸ÔÚ¶ÔÏóµÄÉúÃüÖÜÆÚÖеÄij¸öÌõ¼þ»òÕß×´¿ö£¬ÔÚ´ËÆÚ¼ä¶ÔÏó½«Âú×ãijЩÌõ¼þ¡¢Ö´ÐÐijЩ»î¶¯»î»îµÈ´ýijЩʼþ¡£ËùÓжÔÏó¶¼ÓÐ״̬£¬×´Ì¬ÊǶÔÏóÖ´ÐÐÁËһϵÁлµÄ½á¹û£¬µ±Ä³¸öʼþ·¢Éúºó£¬¶ÔÏóµÄ״̬½«·¢Éú±ä»¯¡£
״̬ÓÃÔ²½Ç¾ØÐαíʾ

³õ̬ºÍÖÕ̬£¨Initial and Final States£©
³õ̬ÓÃʵÐÄÔ²µã±íʾ£¬ÖÕ̬ÓÃÔ²ÐÎÄÚǶԲµã±íʾ¡£

2¡¢×ªÒÆ£¨Transitions£©
×ªÒÆ£¨Transitions£©ÊÇÁ½¸ö״̬֮¼äµÄÒ»ÖÖ¹ØÏµ£¬±íʾ¶ÔÏó½«ÔÚԴ״̬£¨Source
State£©ÖÐÖ´ÐÐÒ»¶¨µÄ¶¯×÷£¬²¢ÔÚij¸öÌØ¶¨Ê¼þ·¢Éú¶øÇÒij¸öÌØ¶¨µÄ¾¯½çÌõ¼þÂú×ãʱ½øÈëÄ¿±ê״̬£¨Target
State£©

ʼþ±ê¼Ç£¨Trigger£©£ºÊÇ×ªÒÆµÄÓÕÒò£¬¿ÉÒÔÊÇÒ»¸öÐźţ¬Ê¼þ¡¢Ìõ¼þ±ä»¯£¨a change in some
condition£©ºÍʱ¼ä±í´ïʽ¡£
¾¯½çÌõ¼þ£¨Guard Condition£©£ºµ±¾¯½çÌõ¼þÂú×ãʱ£¬Ê¼þ²Å»áÒý·¢×ªÒÆ£¨Transition£©¡£
½á¹û£¨Effect£©£º¶ÔÏó×´Ì¬×ªÒÆºóµÄ½á¹û¡£
3¡¢¶¯×÷£¨State Actions£©
¶¯×÷£¨Actions£©ÊÇÒ»¸ö¿ÉÖ´ÐеÄÔ×Ó²Ù×÷,Ò²¾ÍÊÇ˵¶¯×÷ÊDz»¿ÉÖжϵ쬯äÖ´ÐÐʱ¼äÊǿɺöÂÔ²»¼ÆµÄ¡£
ÔÚÉÏÀýÖУ¬¶ÔÏó×´Ì¬×ªÒÆºóµÄ½á¹ûÏÔʾÔÚ×ªÒÆÏßÉÏ£¬Èç¹ûÄ¿±ê״̬ÓÐÐí¶à×ªÒÆ£¬¶øÇÒÿ¸ö×ªÒÆÓÐÏàͬµÄ½á¹û£¬Õâʱ°Ñ×ªÒÆºóµÄ½á¹û£¨Effect£©Õ¹Ê¾ÔÚÄ¿±ê״̬ÖУ¨Target
State£©¸üºÃһЩ£¬¿ÉÒÔ¶¨Òå½øÈ붯×÷£¨Entry Action £©ºÍÍ˳ö¶¯×÷£¨Exit Action£©£¬ÈçÏÂͼ

4¡¢×ÔÉí×ªÒÆ£¨Self-Transitions£©
״̬¿ÉÒÔÓзµ»Ø×ÔÉí״̬µÄ×ªÒÆ£¬³ÆÖ®Îª×ÔÉí×ªÒÆ£¨Self-Transitions£©
2Sºó£¬Poll inputʼþÖ´ÐУ¬×ªÒƵ½×Ô¼º×´Ì¬¡¾Waiting¡¿
5¡¢×éºÏ״̬£¨Compound States£©
ǶÌ×ÔÚÁíÍâÒ»¸ö״̬ÖеÄ״̬³ÆÖ®Îª×Ó״̬£¨sub-state£©,Ò»¸öº¬ÓÐ×Ó״̬µÄ״̬±»³Æ×÷×éºÏ״̬£¨Compound
States£©. ÈçÏÂͼ£¬¡¾Check PIN¡¿ÊÇ×éºÏ״̬£¬¡¾Enter PIN¡¿ÊÇ×Ó״̬¡£

Ò²¿ÉÓÃÒÔÏ·½Ê½½øÐÐÃèÊö

ÈçÉÏͼ£¬×´Ì¬»ú¡¾Check PIN¡¿µÄϸ½Ú±»·Ö¸îµ½ÁíÍâÒ»¸öͼÖÐÁË¡£
6¡¢½øÈë½Úµã£¨Entry Point£©
ÈçÏÂͼËùʾ£¬ÓÉÓÚһЩÔÒò²¢²»»áÖ´Ðгõʼ»¯£¨initialization£©£¬¶øÊÇÖ±½Óͨ¹ýÒ»¸ö½Úµã½øÈë״̬¡¾Ready¡¿£¬Ôò´Ë½Úµã³ÆÖ®Îª½øÈë½Úµã£¨Entry
Point£©

7¡¢Í˳ö½Úµã£¨Exit Point£©

8¡¢Àúʷ״̬£¨History States£©
Àúʷ״̬ÊÇÒ»¸öα״̬£¨Pseudostate£©,ÆäÄ¿µÄÊǼÇס´Ó×éºÏ״̬ÖÐÍ˳öʱËù´¦µÄ×Ó״̬£¬µ±ÔٴνøÈë×éºÏ״̬£¬¿ÉÖ±½Ó½øÈëÕâ¸ö×Ó״̬£¬¶ø²»ÊÇÔٴδÓ×éºÏ״̬µÄ³õ̬¿ªÊ¼¡£

ÔÚÉÏͼµÄ״̬ͼÖУ¬Õý³£µÄ״̬˳ÐòÊÇ:¡¾Washing¡¿- >¡¾Rinsing¡¿->¡¾Spinning¡¿¡£
Èç¹ûÊÇ´Ó״̬¡¾Rinsing¡¿Í»È»Í£µç£¨Power Cut£©Í˳ö£¬,Ï´Ò»úÍ£Ö¹¹¤×÷½øÈë״̬¡¾Power
Off¡¿£¬µ±µçÁ¦»Ö¸´Ê±Ö±½Ó½øÈë״̬¡¾Running¡¿¡£
9¡¢²¢·¢ÇøÓò£¨Concurrent Regions£©
״̬ͼ¿ÉÒÔ·ÖÎªÇøÓò£¬¶øÇøÓòÓÖ°üÀ¨Í˳ö»òÕßµ±Ç°Ö´ÐеÄ×Ó״̬¡£ËµÃ÷×éºÏ״̬ÔÚijһʱ¿Ì¿ÉÒÔͬʱ´ïµ½¶à¸ö×Ó״̬¡£ÈçÏÂͼɲ³µÏµÍ³£¬Í¬Ê±½øÈëǰɲ³µ¡¾Applying
Front Brakes¡¿×´Ì¬ºÍºóɲ³µ¡¾Applying Rear Brakes¡¿×´Ì¬¡£

Èý¡¢×´Ì¬Í¼°¸Àý·ÖÎö£¨State Diagram Example Analysis£©

°´ÕÕblink518µÄ½¨Ò飨¡°³ö»õÖС±ÊÇÊôÓÚÌõ¼þ·ÖÖ§Ó¦¸ÃʹÓÃDecision£©£¬¸Ä³ÉÈçÏÂͼҲÊǺܺõÄ×ö·¨£º

¶©µ¥³ÉÁ¢×´Ì¬Ö÷ÒªÓУº
¶©µ¥³ÉÁ¢
¶©µ¥È¡Ïû£¨Guard:»áÔ±¶©µ¥-½É¿îÆÚÏÞÒѹýÆÚ£©
±¸»õÖУ¨Guard:ÒѸ¶¿î¡¢¶©µ¥³ÉÁ¢¡¢¿â´æÁ¿×ã¹»£©
³ö»õÖУ¨Effect:¿Û³ýÉÌÆ·¿É½Óµ¥Á¿¼°ÒƳý¹ºÎï³µÖеĹºÂò×ÊÁÏ£©
³ö»õÈ·ÈÏ£¨Guard:ʵ¼ÊÅä´ïÈÕ¼°·¢Æ±´úÂë¡¢ºÅÂë¾ù²»Îª¿ÕÖµ£©
³ö»õÍê±Ï£¨Guard:ʵ¼ÊÅä´ïÈÕ²»Îª¿Õ£©
³ö»õʧ°Ü
¶©µ¥³ÉÁ¢£¨Guard:³ö»õÍê±Ï£¬ÒѸ¶¿î¡¢¼øÉÍÆÚ½áÊøÈÕÆÚ Ð¡ÓÚµÈÓÚ [ϵͳÈÕÆÚ]£©
·ÖÎö£º
1¡¢¹ºÎï³µÉú³É¶©µ¥½øÈë״̬¡¾¶©µ¥³ÉÁ¢¡¿
2¡¢ÏµÍ³¼ì²â¶©µ¥ÒѾ¸¶¿î²¢ÇÒ¿â´æÁ¿×ã¹»£¬Ôò½øÈë״̬¡¾±¸»õÖС¿
3¡¢ÎïÁ÷·¢»õ£¬½øÈë״̬¡¾·¢»õÖС¿£¬×´Ì¬×ªÒÆÎª¡¾·¢»õÖС¿ºó£¬ÐèÒª×öµÄ²Ù×÷ÓС°¿Û³ýÉÌÆ·¿É½Óµ¥Á¿¼°ÒƳý¹ºÎï³µÖеĹºÂò×ÊÁÏ¡±
4¡¢·¢»õÍê±Ïºó£¬×´Ì¬·ÖΪ¡¾³ö»õÈ·ÈÏ¡¿ºÍ״̬¡¾³ö»õʧ°Ü¡¿£¬Èç¹û״̬ÊÇ¡¾³ö»õʧ°Ü¡¿£¬Ôò¡¾½áÊø¡¿£¬Èç¹û״̬Ϊ¡¾³ö»õÈ·ÈÏ¡¿£¬Ôò½øÈëÏÂÒ»²½¡£
5¡¢Åä»õÈËÔ±Ìîдʵ¼ÊÅä´ïÈÕÆÚ£¬½øÈë״̬¡¾³ö»õÍê±Ï¡¿¡£
6¡¢Èç¹û¡±ÒѸ¶¿î¡¢¼øÉÍÆÚ½áÊøÈÕÆÚ Ð¡ÓÚµÈÓÚ [ϵͳÈÕÆÚ]¡±,Ôò¡¾¶©µ¥³ÉÁ¢¡¿¡£
ËÄ¡¢×ܽᣨSummary£©
×´Ì¬Í¼ÖØµãÔÚÓÚÃèÊö¶ÔÏóµÄ״̬¼°Æä״̬֮¼äµÄ×ªÒÆ£¬×´Ì¬Í¼µÄ»ù±¾ÔªËØÖ÷ÒªÓУº×´Ì¬¡¢×ªÒÆ¡¢¶¯×÷¡¢×ÔÉí×ªÒÆ¡¢×éºÏ״̬¡¢½øÈë½Úµã¡¢Í˳ö½Úµã¡¢Àúʷ״̬¡¢²¢·¢ÇøÓòµÈ£¬×´Ì¬ÖеÄʼþ·ÖΪµ÷ÓÃʼþ£¨Call£©¡¢±ä»¯Ê¼þ£¨Change£©¡¢Ê±¼äʼþ£¨Time£©ºÍÐźÅʼþ(Singal)¡£×îºóÒÔʵÀý¶Ô״̬¶Ô½øÐÐÁË·ÖÎö¡£ |