نمودار ماشین حالت یک رفتار است که توالی حالتهایی را که یک شیء در طول عمر خود در پاسخ به رویدادها بازدید میکند، مشخص میکند و همچنین پاسخهای آن به آن رویدادها را نشان میدهد.
حالت
حالت یک وضعیت در طول عمر یک شیء است که در آن برخی شرایط را برآورده میکند، فعالیتی را انجام میدهد یا منتظر یک رویداد خارجی میماند.
مثال:

ویژگیهای حالت
- حالتها شرایط اشیاء را در نقاط خاصی از زمان نشان میدهند.
- اشیاء (یا سیستمها) میتوانند به عنوان حرکت از یک حالت به حالت دیگر دیده شوند.
- نقطهای در چرخه حیات یک عنصر مدل که برخی شرایط را برآورده میکند، جایی که یک عمل خاص در حال انجام است یا جایی که منتظر یک رویداد است.
شکل زیر توصیف دقیقی از یک حالت را نشان میدهد. حالت با اقدامات داخلی (انجام، کمک) گسترش یافته است. در مقایسه با سایر اقدامات، این اقدامات میتوانند قطع شوند. اگر «لغو» اتفاق بیفتد، اقدامات انجام یا کمک قطع میشوند. اقدامات داخلی پس از بخش «ورود» انجام میشوند و زمانی که حالت ترک میشود، متوقف میشوند.

حالتهای اولیه و نهایی
- حالت اولیهنمودار ماشین حالت، که به عنوان یک شبه حالت اولیه شناخته میشود، با یک دایره توپر نشان داده میشود. یک انتقال از این حالت، اولین حالت واقعی را نشان میدهد.
- حالت نهایینمودار ماشین حالت به صورت دایرههای هممرکز نشان داده میشود. یک ماشین حالت حلقه باز نمایانگر شیئی است که ممکن است قبل از پایان سیستم خاتمه یابد، در حالی که نمودار ماشین حالت حلقه بسته حالت نهایی ندارد؛ اگر اینطور باشد، شیء تا زمانی که کل سیستم خاتمه یابد، زنده میماند.
مثال:

رویداد
یک رویداد مشخصهای از یک وقوع مهم است. برای یک ماشین حالت، یک رویداد وقوع یک محرک است که میتواند یک انتقال حالت را تحریک کند.
انتقال
یک انتقال رابطهای بین دو حالت است که نشان میدهد یک شیء در حالت اول، زمانی که مجموعهای مشخص از رویدادها و شرایط برآورده شود، اقداماتی خاص را انجام داده و به حالت دوم وارد میشود.
یک انتقال شامل: اجزای انتقال که شامل (1) یک حالت منبع (2) محرک رویداد (3) یک عمل (4) یک حالت هدف است.
انتقال خود
یک انتقال خود، انتقالی است که حالتهای منبع و هدف آن یکسان هستند.
عمل
یک عمل یک محاسبه قابل اجرا و اتمی (با ارجاع به ماشین حالت) است. اعمال ممکن است شامل عملیات، ایجاد یا تخریب اشیاء دیگر، یا ارسال سیگنال به اشیاء دیگر (رویدادها) باشد.
مثال کتابخانه
شکل زیر یک نمودار ماشین حالت ساده را نشان میدهد. اجزای اصلی چنین نموداری عبارتند از:
- حالت: این مثال دارای دو حالت است: «در امانت» و «روی قفسه».
- حالت اولیه: این حالت است که سیستم در آن شروع میشود.
- انتقالات: انتقالات تغییرات ممکن حالت را توصیف میکنند. نمودار دارای دو انتقال است: از «در امانت» به «روی قفسه» و بالعکس.
- رویدادها: رویدادها بر روی انتقالات برچسبگذاری میشوند. آنها نمایانگر رویدادی هستند که در یک انتقال انجام میشود. هنگام حرکت از حالت «در امانت» به حالت «روی قفسه»، رویداد «برگشت()» انجام میشود.
اعمال تغییراتی در متغیرهای حالت هستند. در مثال زیر، اعمال بر روی انتقالات مشخص شدهاند. هنگامی که انتقال از «روی قفسه» به «در امانت» انجام میشود، متغیر حالت کتابها کاهش مییابد.

اعمال میتوانند بر روی انتقالات مشخص شوند، اما همچنین در حالتها نیز. در این صورت، میتوان مشخص کرد که آیا عمل باید هنگام ورود یا خروج از حالت انجام شود. شکل زیر این گزینهها را نشان میدهد.
- گزینه اول مشخصه اعمال را هنگام انجام یک انتقال نشان میدهد. عمل بر روی تغییر حالت انجام میشود.
- گزینه دوم مشخصه یک عمل در یک حالت را نشان میدهد. کلمه کلیدی «ورود» نشان میدهد که عمل باید هنگام ورود به حالت انجام شود.
- در نهایت، گزینه سوم نشان میدهد که چگونه مشخص شود که یک عمل هنگام ترک یک حالت انجام میشود. به کلمه کلیدی «خروج» توجه کنید.

نوتیشن نمودار ماشین حالت ساده

نمودار ماشین حالت – مفاهیم پیشرفته
محدودیتها
امکان اضافه کردن محدودیتها به انتقالات وجود دارد. به شکل زیر توجه کنید. محدودیت «[not last copy]» و «[last copy]» برای تمایز دو انتقال با رویداد «copyBorrowed()» استفاده میشود. معنای آن این است که یک انتقال زمانی فعال میشود که محدودیت درست باشد.

زیرحالتها
یک حالت ساده حالتی است که هیچ زیرساختی ندارد. حالتی که زیرحالتها (حالتهای تو در تو) دارد، به آن حالت ترکیبی میگویند. زیرحالتها میتوانند به هر سطحی تو در تو باشند. یک ماشین حالت تو در تو ممکن است حداکثر یک حالت اولیه و یک حالت نهایی داشته باشد. زیرحالتها برای سادهسازی ماشینهای حالت پیچیده و مسطح استفاده میشوند و نشان میدهند که برخی حالتها تنها در یک زمینه خاص (حالت محاط) ممکن است.
مثال زیرحالت – بخاری

نمودارهای ماشین حالت اغلب برای استخراج موارد تست استفاده میشوند، در اینجا فهرستی از ایدههای تست ممکن است:
- حالت بیکار رویداد «بسیار داغ» را دریافت میکند
- حالت بیکار رویداد «بسیار سرد» را دریافت میکند
- حالت خنککننده/راهاندازی رویداد «کمپرسور در حال کار» را دریافت میکند
- حالت خنککننده/آماده رویداد «فن در حال کار» را دریافت میکند
- وضعیت خنککننده/در حال اجرا رویداد OK را دریافت میکند
- وضعیت خنککننده/در حال اجرا رویداد خطا را دریافت میکند
- وضعیت خطا رویداد خطا برطرف شده را دریافت میکند
- وضعیت گرمایش رویداد OK را دریافت میکند
- وضعیت گرمایش رویداد خطا را دریافت میکند
وضعیتهای تاریخچه
مگر اینکه بهطور دیگری مشخص شده باشد، زمانی که یک انتقال وارد یک وضعیت ترکیبی میشود، عمل ماشین حالت تو در تو دوباره از وضعیت اولیه شروع میشود (مگر اینکه انتقال بهطور مستقیم به یک زیر وضعیت هدفگذاری شود). وضعیتهای تاریخچه به ماشین حالت اجازه میدهند دوباره وارد آخرین زیر وضعیت فعال قبل از خروج شود وضعیت ترکیبی. یک مثال از استفاده از وضعیت تاریخچه در شکل زیر ارائه شده است.

وضعیت همزمان
همانطور که در بالا ذکر شد، وضعیتها در نمودارهای ماشین حالت میتوانند تو در تو باشند. وضعیتهای مرتبط میتوانند در یک وضعیت ترکیبی واحد گروهبندی شوند. تو در تو کردن وضعیتها در داخل یکدیگر زمانی ضروری است که یک فعالیت شامل زیر فعالیتهای همزمان باشد. نمودار ماشین حالت زیر یک حراج با دو زیر وضعیت همزمان را مدلسازی میکند: پردازش پیشنهاد و تأیید محدودیت پرداخت.
مثال نمودار ماشین حالت همزمان — فرآیند حراج
در این مثال، ماشین حالت که ابتدا وارد حراج میشود نیاز به یک انشعاب در شروع به دو رشته شروع جداگانه دارد. هر زیر وضعیت یک وضعیت خروجی دارد تا پایان رشته را علامتگذاری کند. مگر اینکه خروج غیرعادی وجود داشته باشد (لغو شده یا رد شده)، خروج از وضعیت ترکیبی زمانی اتفاق میافتد که هر دو زیر وضعیت خارج شده باشند.

لینکهای مرتبط
مثالهای نمودار وضعیت خودتان را با Visual Paradigm Online بسازید
- مثالها و الگوهای رایگان نمودار ماشین حالت که قابل ویرایش در نرمافزار آنلاین نمودار ماشین حالت هستند: Visual Paradigm Online.
- از الگوها به عنوان نقطه شروع برای ایجاد نمودار ماشین حالت خود استفاده کنید.








ابزار نرمافزار UML رایگان
شما یاد گرفتهاید که نمودار ماشین حالت چیست و چگونه یک نمودار ماشین حالت بکشید. اکنون زمان آن است که نمودار ماشین حالت خود را بکشید. نسخه جامعه Visual Paradigm را دریافت کنید، یک نرمافزار UML رایگان، و نمودار ماشین حالت خود را با ابزار رایگان نمودار ماشین حالت ایجاد کنید. استفاده از آن آسان و شهودی است.
This post is also available in Deutsch, English, Español, Français, Bahasa Indonesia, 日本語, Polski, Portuguese, Ру́сский, Việt Nam, 简体中文 and 繁體中文.