Xem thêm

Tạp chí Tu Uyen

Huy Erick
Sơ đồ Máy trạng thái Mô hình sơ đồ máy trạng thái là mô hình hành vi của một đối tượng duy nhất, có thể dễ dàng theo dõi các sự kiện mà đối tượng...

Sơ đồ Máy trạng thái

Mô hình sơ đồ máy trạng thái là mô hình hành vi của một đối tượng duy nhất, có thể dễ dàng theo dõi các sự kiện mà đối tượng trải qua trong quá trình tồn tại, và phản hồi lại các sự kiện đó.

Ví dụ sau đây minh họa sơ đồ máy trạng thái của cửa sổ trong quá trình tồn tại.

Cửa sổ có thể ở một trong ba trạng thái: Mở, Đóng hoặc Khóa. Những trạng thái này tương ứng với các sự kiện Mở, Đóng, Khóa và Mở khóa. Lưu ý rằng không phải tất cả các sự kiện đều hợp lệ trong tất cả các trạng thái: ví dụ, nếu cửa đang ở trạng thái Mở, bạn không thể khóa nó cho đến khi bạn đóng nó. Cũng như vậy, quá trình chuyển trạng thái có thể có điều kiện bảo vệ: nếu cửa đang ở trạng thái Mở, nó chỉ có thể phản ứng với sự kiện Nếu lối vào của cửa là trống. Cú pháp và các quy tắc được sử dụng trong sơ đồ máy trạng thái sẽ được thảo luận trong các phần tiếp theo.

Photobucket

Các trạng thái

Trạng thái được biểu diễn bằng hình chữ nhật với các góc được làm cong và tên của trạng thái được viết bên trong.

Photobucket

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

Trạng thái Ban đầu được biểu diễn bằng một hình tròn đen được gắn nhãn. Trạng thái Kết thúc được biểu diễn bằng một hình tròn có một chấm bên trong và cũng có thể được gắn nhãn.

Chuyển tiếp

Chuyển tiếp từ trạng thái này sang trạng thái khác được biểu diễn bằng một đường mũi tên. Chuyển tiếp có thể là một bước kích hoạt, có điều kiện và có tác động, theo như hình dưới đây.

"Kích hoạt" là nguyên nhân của chuyển tiếp, có thể là tín hiệu, sự kiện, thay đổi trong điều kiện hoặc thời gian. "Điều kiện" là một điều kiện, nó phải đúng với kích hoạt là nguyên nhân của chuyển tiếp. "Tác động" là hành động, nó sẽ được gọi trực tiếp từ đối tượng sở hữu máy trạng thái như kết quả của quá trình chuyển tiếp.

Hành động của trạng thái

Trong ví dụ chuyển tiếp trước đó, Tác động liên quan đến chuyển tiếp. Nếu trạng thái đích có nhiều chuyển tiếp trước nó, mỗi chuyển tiếp có cùng tác động liên quan đến nó, nó cũng tốt hơn khi liên kết tác động với trạng thái đích hơn là các bước chuyển tiếp. Điều này có thể được thực hiện bằng cách định nghĩa hành động nhập cảnh cho trạng thái. Sơ đồ dưới đây cho thấy trạng thái với hành động nhập và ra khỏi trạng thái.

Hành động có thể được định nghĩa trong sự kiện, hoặc hành động luôn xảy ra. Nó có thể định nghĩa một số lượng bất kỳ hành động của mỗi loại.

Chuyển tiếp tự thân

Trạng thái có thể chuyển đến chính nó như hình dưới đây. Nó hữu ích nhất khi tác động liên quan đến chuyển tiếp.

Photobucket

Trạng thái kết hợp

Sơ đồ máy trạng thái có thể chứa sơ đồ máy trạng thái con, như ví dụ dưới đây:

Cách khác hiển thị cùng thông tin như sau:

Photobucket

Ký hiệu trong phiên bản trên gợi ý rằng chi tiết của sơ đồ máy trạng thái Kiểm tra PIN được hiển thị trong sơ đồ riêng biệt.

Điểm vào

Đôi khi bạn không muốn vào sơ đồ máy trạng thái ở Trạng thái Ban đầu. Ví dụ, trong sơ đồ máy trạng thái dưới đây, nó sẽ bình thường bắt đầu trong trạng thái Khởi tạo, nhưng vì một số lý do, nó không thể thực hiện quá trình khởi tạo, nó có thể bắt đầu trong trạng thái Sẵn sàng bằng cách chuyển tiếp đến Điểm vào.

Photobucket

Tương tự với Điểm vào, nó cũng có thể đổi tên thành Điểm ra. Sơ đồ dưới đây cho một ví dụ nơi trạng thái chính chạy sau quá trình xử lý chính của trạng thái phụ thuộc vào định tuyến ngoài của trạng thái.

Điểm ra

Trạng thái Lựa chọn

Trạng thái lựa chọn được biểu diễn bằng một hình thoi với một hoặc nhiều chuyển tiếp. Sơ đồ dưới đây cho thấy trạng thái sau khi trạng thái lựa chọn phụ thuộc vào định dạng tin nhắn được chọn trong quá trình của trạng thái trước.

Trạng thái Nối liền

Trạng thái nối liền thường được sử dụng như các mắt xích với nhau trong đường luồng. Một trạng thái nối đơn có thể có một hoặc nhiều chuyển tiếp đầu vào và một hoặc nhiều chuyển tiếp đầu ra và một điều kiện có thể được áp dụng cho mỗi chuyển tiếp. Các nối thường có ý nghĩa; nối đơn phân tách dòng chảy đầu vào thành các dòng chảy đầu ra nhận dạng các nhánh điều kiện tĩnh như là một sự phản ngược của trạng thái lựa chọn nhận dạng các nhánh điều kiện động.

Trạng thái Kết thúc

Trạng thái Kết thúc ngầm định rằng trạng thái máy đã kết thúc. Trạng thái Kết thúc được biểu diễn bằng dấu nhân.

Photobucket

Trạng thái Lịch sử

Trạng thái lịch sử thường được sử dụng để ghi nhớ trạng thái trước của máy trạng thái khi nó bị ngắt quãng. Sơ đồ dưới đây minh họa việc sử dụng trạng thái lịch sử. Ví dụ là máy giặt theo dõi.

Trong máy giặt, khi đang chạy, nó sẽ xử lý từ "Đang giặt" đến "Đang xả", sau đó "Đang quay". Nếu mất điện, máy giặt dừng lại và chuyển đến trạng thái "Tắt nguồn". Khi có điện, trạng thái cuối cùng được ghi nhớ trong trạng thái lịch sử sẽ được khôi phục trạng thái đang chạy.

Vùng đồng thời

Trạng thái có thể chia thành các vùng con chứa các trạng thái con tồn tại và chạy đồng thời. Ví dụ dưới đây cho thấy trong trạng thái "Đang áp dụng phanh", trước và sau dấu ngoặc sẽ hoạt động đồng bộ và độc lập. Chú ý sử dụng trạng thái phân nhánh và trạng thái hợp nhất nhiều hơn là trạng thái lựa chọn và nối thống nhất. Những ký hiệu này thường được sử dụng để đồng bộ các luồng chạy đồng thời.

Photobucket

1