Hướng dẫn toàn diện về biểu đồ trạng thái với các ví dụ

Biểu đồ máy trạng thái là một hành vi xác định chuỗi các trạng thái mà một đối tượng trải qua trong suốt vòng đời của nó để phản ứng với các sự kiện, cùng với các phản ứng của nó đối với những sự kiện đó.

Trạng thái

Một trạng thái là một điều kiện trong suốt vòng đời của một đối tượng mà trong đó nó thỏa mãn một số điều kiện, thực hiện một số hoạt động, hoặc chờ đợi một sự kiện bên ngoài nào đó.

Ví dụ:

Đặc điểm của Trạng thái

  • Trạng thái đại diện cho các điều kiện của các đối tượng tại những thời điểm nhất định.
  • Các đối tượng (hoặc Hệ thống) có thể được xem như đang di chuyển từ trạng thái này sang trạng thái khác.
  • Một điểm trong vòng đời của một phần tử mô hình thỏa mãn một số điều kiện, nơi một hành động cụ thể đang được thực hiện hoặc nơi một sự kiện nào đó đang được chờ đợi.

Hình dưới đây cho thấy một mô tả chi tiết về một trạng thái. Trạng thái được mở rộng với các hành động nội bộ (thực hiện, giúp đỡ). Trái ngược với các hành động khác, những hành động này có thể bị gián đoạn. Nếu xảy ra ”hủy”, các hành động thực hiện hoặc giúp đỡ sẽ bị gián đoạn. Các hành động nội bộ được thực hiện sau phần ”nhập” và bị hủy khi trạng thái bị rời bỏ.

Trạng thái Khởi đầu và Kết thúc

  • Trạng thái khởi đầucủa một biểu đồ máy trạng thái, được biết đến như một trạng thái giả khởi đầu, được chỉ định bằng một hình tròn đặc. Một chuyển tiếp từ trạng thái này sẽ cho thấy trạng thái thực đầu tiên.
  • Trạng thái kết thúccủa một biểu đồ máy trạng thái được hiển thị dưới dạng các vòng tròn đồng tâm. Một máy trạng thái vòng mở đại diện cho một đối tượng có thể kết thúc trước khi hệ thống kết thúc, trong khi một biểu đồ máy trạng thái vòng kín không có trạng thái kết thúc; nếu đúng như vậy, thì đối tượng sẽ tồn tại cho đến khi toàn bộ hệ thống kết thúc.

Ví dụ:

Sự kiện

Một sự kiện là sự chỉ định của một sự kiện quan trọng. Đối với một máy trạng thái, một sự kiện là sự xuất hiện của một kích thích có thể kích hoạt một chuyển tiếp trạng thái.

Chuyển tiếp

Một chuyển tiếp là một mối quan hệ giữa hai trạng thái cho thấy rằng một đối tượng trong trạng thái đầu tiên sẽ, khi một tập hợp các sự kiện và điều kiện được thỏa mãn, thực hiện một số hành động nhất định và vào trạng thái thứ hai.

Một chuyển tiếp có: Các thành phần chuyển tiếp bao gồm (1) một trạng thái nguồn (2) kích hoạt sự kiện (3) một hành động (4) một trạng thái mục tiêu.

Chuyển tiếp tự thân

Một chuyển tiếp tự thân là một chuyển tiếp mà trạng thái nguồn và trạng thái mục tiêu là giống nhau.

Hành động

Một hành động là một phép toán có thể thực thi, nguyên tử (liên quan đến máy trạng thái). Các hành động có thể bao gồm các phép toán, việc tạo ra hoặc phá hủy các đối tượng khác, hoặc gửi tín hiệu đến các đối tượng khác (sự kiện).

Ví dụ Thư viện

Hình dưới đây cho thấy một biểu đồ máy trạng thái đơn giản. Các thành phần chính của một biểu đồ như vậy là:

  • Trạng thái: ví dụ có hai trạng thái: ”Đang cho mượn” và ”Trên kệ”.
  • Trạng thái khởi đầu: đây là trạng thái mà hệ thống bắt đầu.
  • Chuyển tiếp: các chuyển tiếp mô tả các thay đổi trạng thái có thể xảy ra. Biểu đồ có hai chuyển tiếp: từ ”Đang cho mượn” đến ”Trên kệ” và ngược lại.
  • Sự kiện: các sự kiện được gán nhãn trên các chuyển tiếp. Chúng đại diện cho sự kiện được thực hiện trên một chuyển tiếp. Khi di chuyển từ trạng thái ”Đang cho mượn” đến trạng thái ”Trên kệ”, sự kiện ”returned()” được thực hiện.

Các hành động là các sửa đổi của các biến trạng thái. Trong ví dụ dưới đây, các hành động được chỉ định trên các chuyển tiếp. Khi chuyển tiếp từ ”Trên kệ” đến ”Đang cho mượn” được thực hiện, biến trạng thái books sẽ giảm.

Các hành động có thể được chỉ định trên các chuyển tiếp, nhưng cũng có thể trong các trạng thái. Trong trường hợp đó, người ta có thể chỉ định liệu hành động phải được thực hiện khi vào hoặc rời khỏi trạng thái. Hình dưới đây cho thấy những tùy chọn này.

  • Tùy chọn đầu tiên cho thấy việc chỉ định các hành động khi một chuyển tiếp được thực hiện. Hành động được thực hiện khi có sự thay đổi trạng thái.
  • Tùy chọn thứ hai cho thấy việc chỉ định một hành động trong một trạng thái. Từ khóa ”nhập” chỉ ra rằng hành động phải được thực hiện khi trạng thái được vào.
  • Cuối cùng, tùy chọn thứ ba cho thấy cách chỉ định rằng một hành động được thực hiện khi rời khỏi một trạng thái. Lưu ý từ khóa ”thoát”.

Ký hiệu Biểu đồ Máy trạng thái Đơn giản

Biểu đồ Máy trạng thái — Các Khái niệm Nâng cao

Ràng buộc

Có thể thêm các ràng buộc vào các chuyển tiếp. Xem Hình dưới đây. Ràng buộc ”[không phải bản sao cuối cùng]” và ”[bản sao cuối cùng]” được sử dụng để phân biệt hai chuyển tiếp với sự kiện ”copyBorrowed()”. Ý nghĩa là một chuyển tiếp được kích hoạt khi ràng buộc là đúng.

Trạng thái con

Một trạng thái đơn giản là trạng thái không có cấu trúc con. Một trạng thái có các trạng thái con (trạng thái lồng nhau) được gọi là trạng thái tổng hợp. Các trạng thái con có thể được lồng vào bất kỳ cấp độ nào. Một máy trạng thái lồng nhau có thể có tối đa một trạng thái khởi đầu và một trạng thái kết thúc. Các trạng thái con được sử dụng để đơn giản hóa các máy trạng thái phẳng phức tạp bằng cách cho thấy rằng một số trạng thái chỉ có thể xảy ra trong một ngữ cảnh cụ thể (trạng thái bao bọc).

Ví dụ Trạng thái con — Máy sưởi

Các biểu đồ máy trạng thái thường được sử dụng để phát triển các trường hợp kiểm tra, đây là danh sách các ý tưởng kiểm tra có thể:

  • Trạng thái nhàn rỗi nhận sự kiện Quá Nóng
  • Trạng thái nhàn rỗi nhận sự kiện Quá Lạnh
  • Trạng thái Làm mát/Khởi động nhận sự kiện Máy nén Đang chạy
  • Trạng thái Làm mát/Sẵn sàng nhận sự kiện Quạt Đang chạy
  • Trạng thái Làm mát/Chạy nhận sự kiện OK
  • Trạng thái Làm mát/Chạy nhận sự kiện Thất bại
  • Trạng thái Thất bại nhận sự kiện Thất bại đã được xóa
  • Trạng thái Sưởi ấm nhận sự kiện OK
  • Trạng thái Sưởi ấm nhận sự kiện Thất bại

Trạng thái Lịch sử

Trừ khi có quy định khác, khi một chuyển tiếp vào trạng thái tổng hợp, hành động của máy trạng thái lồng ghép bắt đầu lại từ trạng thái ban đầu (trừ khi chuyển tiếp nhắm vào một trạng thái con trực tiếp). Các trạng thái lịch sử cho phép máy trạng thái vào lại trạng thái con cuối cùng đã hoạt động trước khi rời đitrạng thái tổng hợp. Một ví dụ về việc sử dụng trạng thái lịch sử được trình bày trong hình dưới đây.

Trạng thái Đồng thời

Như đã đề cập ở trên, các trạng thái trong sơ đồ máy trạng thái có thể được lồng ghép. Các trạng thái liên quan có thể được nhóm lại thành một trạng thái tổng hợp duy nhất. Việc lồng ghép các trạng thái bên trong nhau là cần thiết khi một hoạt động liên quan đến các hoạt động con đồng thời. Sơ đồ máy trạng thái sau đây mô hình hóa một cuộc đấu giá với hai trạng thái con đồng thời: xử lý giá thầu và ủy quyền giới hạn thanh toán.

Ví dụ Sơ đồ Máy trạng thái Đồng thời — Quá trình Đấu giá

Trong ví dụ này, máy trạng thái lần đầu tiên vào Đấu giá yêu cầu một nhánh ở đầu vào hai luồng khởi đầu riêng biệt. Mỗi trạng thái con có một trạng thái thoát để đánh dấu sự kết thúc của luồng. Trừ khi có một sự thoát bất thường (Bị hủy hoặc Bị từ chối), việc thoát khỏi trạng thái tổng hợp xảy ra khi cả hai trạng thái con đã thoát.

Liên kết Liên quan

  1. Ngôn ngữ Mô hình Hợp nhất là gì?
  2. Công cụ sơ đồ UML chuyên nghiệp

Ví dụ Sơ đồ Trạng thái Tự làm với Visual Paradigm Online

  • Ví dụ và mẫu Sơ đồ Máy trạng thái miễn phí có thể chỉnh sửa trong phần mềm Sơ đồ Máy trạng thái trực tuyến: Visual Paradigm Online.
  • Sử dụng các mẫu như một điểm khởi đầu để tạo Sơ đồ Máy trạng thái của riêng bạn.

Lò nướng

Đồng hồ kỹ thuật số

Trạng thái Đường chéo

Trạng thái Tổng hợp

Máy sưởi

Máy nướng bánh

Hệ thống Bán vé

Điện thoại

Công cụ Phần mềm UML miễn phí

Bạn đã học được Sơ đồ Máy trạng thái là gì và cách vẽ Sơ đồ Máy trạng thái. Đã đến lúc vẽ Sơ đồ Máy trạng thái của riêng bạn. Nhận phiên bản Cộng đồng Visual Paradigm, một phần mềm UML miễn phí, và tạo Sơ đồ Máy trạng thái của riêng bạn với công cụ Sơ đồ Máy trạng thái miễn phí. Nó dễ sử dụng và trực quan.

Tải xuống miễn phí

This post is also available in Deutsch, English, Español, فارسی, Français, Bahasa Indonesia, 日本語, Polski, Portuguese, Ру́сский, 简体中文 and 繁體中文.

Leave a Reply

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *