25/05/2018, 00:01

Biểu đồ trạng thái

Bước nghiên cứu tiếp theo sau biểu đồ trình tự là biểu đồ trạng thái (State Diagram, State Machine Diagram, State Chart Diagram ). mô tả các thông tin về các trạng thái khác nhau của đối tượng, thể hiện các đối tượng chuyển từ trạng thái này sang ...

Bước nghiên cứu tiếp theo sau biểu đồ trình tự là biểu đồ trạng thái (State Diagram, State Machine Diagram, State Chart Diagram ).

mô tả các thông tin về các trạng thái khác nhau của đối tượng, thể hiện các đối tượng chuyển từ trạng thái này sang trạng thái khác như thế nào, hoạt động của đối tượng trong mỗi trạng thái ra sao. thể hiện chu kỳ hoạt động của đối tượng, các hệ thống con và của cả hệ thống, từ khi chúng được tạo ra cho đến khi kết thúc. mô tả:

  • Các trạng thái mà các đối tượng có thể có,
  • Các sự kiện: các thông điệp nhận được, các lỗi có thể xuất hiện, điều kiện nào đó có thể trở thành đúng (true), khoảng thời gian đã qua, v.v. tác động lên trạng thái để làm biến đổi chúng.

Biểu đồ này là giải pháp tốt để mô hình hoá hành vi động của các lớp đối tượng. Trong một dự án, không nhất thiết phải tạo ra các biểu đồ trạng thái cho tất cả các lớp. Tuy nhiên, đối với những lớp có nhiều hành vi động, có nhiều trạng thái hoạt động khác nhau thì biểu đồ trạng thái là hữu ích, giúp chúng ta hiểu rõ hệ thống hơn.

Mọi đối tượng trong hệ thống đều có chu kỳ sống và mỗi thời điểm đều có một trạng thái nào đó.

Người bán hàng trong hệ thống HBH đang bán hàng, phiên bán hàng đã được thanh toán, v.v.

Trạng thái là một trong các điều kiện có thể để đối tượng tồn tại, là kết quả của một hoạt động trước đó của đối tượng.

Trạng thái của đối tượng thường được mô tả trong hình chữ nhật góc tròn và được xác định bởi:

  • Tên gọi trạng thái, thường bắt đầu bằng động từ,
  • Biến trạng thái mô tả các giá trị hiện thời của trạng thái,
  • Hoạt động là hành vi mà đối tượng sẽ thực hiện khi nó ở vào trạng thái đó.

Hoạt động của trạng thái được mô tả hình thức như sau:

event_name argument_list ‘/’ action_exp

Trong đó,

event_name: Tên của sự kiện, có thể là một trong các sự kiện chuẩn: exit (thoát ra), entry (nhập vào), do (thực hiện).

argument_list: danh sách các sự kiện,

action_exp: những hoạt động cần thực hiện bao gồm các lời gọi hàm, thao tác trên các biến trạng thái, v.v.

Trạng thái Login (đăng nhập hệ thống) được mô tả trong UML:

Trạng thái Login

Khi hệ thống ở trạng thái Login thì biến LoginTime (thời gian khi khởi nhập) được gán là CurrentTime (thời gian hiện thời) của máy tính. Sự kiện vào của trạng thái này là gõ từ “login” và để thoát ra khỏi trạng thái này thì phải thực hiện lời gọi hàm login(UserName, Password). Các hoạt động của đối tượng ở trạng thái này là: Nhận vào UserName (tên người sử dụng), Password (mật khẩu), và hiển thị sự trợ giúp display help.

  • Khi không cần mô tả chi tiết thì có thể chỉ cần tên gọi để xác định trạng thái trong các biểu đồ.
  • Có hai trạng thái đặc biệt là trạng thái bắt đầu được ký hiệu là: và trạng thái kết thúc, được ký hiệu là

thường có trạng thái bắt đầu còn trạng thái kết thúc thì có thể có hoặc không tuỳ vào chu kỳ hoạt động của các đối tượng.

Trong biểu đồ, đường mũi tên chỉ ra sự biến đổi từ một trạng thái sang trạng thái khác khi có các sự kiện xảy ra làm thay đổi các trạng thái. Trạng thái của đối tượng sẽ bị thay đổi khi có cái gì đó xảy ra, nghĩa là khi có một hay nhiều sự kiện xuất hiện. Sự biến đổi trạng thái hay sự chuyển trạng thể hiện mối quan hệ giữa các trạng thái với nhau.

Sự chuyển trạng được thể hiện trong biểu đồ bằng mũi tên có nhãn là sự kiện, thao tác (hàm có đối số), hoặc điều kiện cầm canh (guard). Sự chuyển trạng có thể là đệ qui, nghĩa là trong một điều kiện nhất định, một đối tượng có thể quay lại trạng thái cũ của nó.

Để xác định được các trạng thái và các sự kiện chúng ta cần trả lời cho các câu hỏi sau:

  • Một đối tượng có thể ở những trạng thái nào? Liệt kê tất cả các trạng thái có thể có trong hệ thống của mỗi đối tượng.
  • Những sự kiện nào có thể xuất hiện? Bởi vì sự kiện có thể làm biến đổi trạng thái, do vậy, từ các sự kiện có thể xác định được các trạng thái của đối tượng.
  • Những trạng thái mới nào sẽ xuất hiện? Từ một trạng thái, đối tượng có thể chuyển sang trạng thái mới khi một số sự kiện xác định xuất hiện.
  • Ở mỗi trạng thái, hoạt động của đối tượng là gì?
  • Sự tương tác giữa các đối tượng là gì? Sự tương tác giữa các đối tượng thường gắn chặt với các trạng thái của đối tượng.
  • Những sự kiện, hay chuyển đổi trạng thái nào là không thể xảy ra? Một số sự kiện, hay trạng thái không thể chuyển đổi sang trạng thái khác được,

Khi khách mua hàng trả bằng thẻ tín dụng không hợp pháp thì phiên bán đó không thực hiện được.

  • Cái gì làm cho đối tượng được tạo ra? Đối tượng thường được tạo ra bởi một, hay một số sự kiện.
  • Cái gì làm cho đối tượng bị huỷ bỏ? Đối tượng thường được loại bỏ khi không còn cần thiết nó nữa.

được sử dụng để chỉ ra cách các đối tượng phản ứng lại đối với các sự kiện và cách biến đổi các trạng thái theo các sự kiện đó.

Hãy mô tả hoạt động của hệ thống thang máy. Thường thang máy bắt đầu hoạt động từ tầng một (OnFirstFloor). Khi đang ở OnFirstFloor và có người ở tầng trên (floorNum) nhấn nút yêu cầu thang máy (goUp(floorNum)) thì nó chuyển sang trạng thái chuyển lên (MovingUp). Khi chuyển đến tầng yêu cầu (arrived) thì nó chuyển sang trạng thái dừng, nghỉ (Idle) để mở cửa cho người vào /ra khỏi thang máy. Đang ở trạng thái nghỉ Idle, nếu có ai ở tầng trên yêu cầu thì nó lại chuyển về MovingUp, nếu có người ở tầng dưới yêu cầu thì thang máy chuyển xuống (MovingDown), còn khi hết giờ (time-out) nó sang trạng thái chuyển về tầng một (MovingtoFirstFloor) rồi về tầng một. mô tả hoạt động của thang máy được vẽ như hình 2.

của lớp Thangmay

Chúng ta hãy xây dựng biểu đồ trạng thái cho lớp HoaDon.

Biểu đồ các trạng thái của lớp HoaDon

Khi một hoá đơn (đối tượng của lớp HoaDon) được tạo lập thì nó ở trạng thái chưa thanh toán, sau đó khi có sự kiện khách hàng thanh toán, nghĩa là khách trả tiền cho các mặt hành đã chọn mua thì nó chuyển sang trạng thái đã thanh toán.

Như đã đề cập ở trên, các ca sử dụng là rất quan trọng, nó thể hiện những nhiệm vụ mà hệ thống phải thực hiện. Vì vậy, thường chúng phải xây dựng các biểu đồ trạng thái để mô tả cho các lớp trong những ca sử dụng quan trọng nhất của hệ thống.

của hệ HBH được xây dựng như sau:

của lớp HBH

Trạng thái của một đối tượng cũng có khi là trạng thái phức hợp, nghĩa là nó có thể chứa các trạng thái con được lồng bên trong. Một số trạng thái, ví dụ trạng thái Kiểm duyệt thẻ trong biểu đồ trên có thể tiếp tục được làm mịn hơn ở pha sau.

Chúng ta xét tiếp Telephone trong ca sử dụng “Gọi điện thoại” đã được mô tả bằng biểu đồ vết các sự kiện ở trên. Telephone có hai trạng thái chính: Idle (rỗi) và Active (hoạt động). Trạng thái Active lại có thể phân tách tiếp thành PlayingDialTone (âm hiệu ĐT mời gọi), Dialing (quay số), Connecting (kết nối hai đầu dây) và Talking (đàm thoại). cho các hoạt động trên được mô tả như sau.

của Telephone

Máy điện thoại ở trạng thái Idle, khi người gọi nhấc tai nghe lên (off hook) thì nó chuyển sang trạng thái hoạt động (Active) sẵn sàng phục vụ đàm thoại giữa hai điểm trong mạng điện thoại. Trạng thái Active lại được mô tả dưới dạng một biểu đồ trạng thái con. Bắt đầu là trạng thái Có âm hiệu điện thoại mời gọi (PlayingDialTone), khi người gọi quay số (digit) nó chuyển sang trạng thái Quay số (Dialing). Khi quay xong (completed), nó chuyển tiếp sang trạng thái Kết nối (Connecting) và khi đường dây được kết nối (connected) thì hai người có thể nói chuyện được với nhau (Talking). Trạng thái Talking lại có thể mô tả chi tiết hơn bằng một biểu đồ trạng thái con nếu cần thiết.

  • chỉ cần xây dựng cho những đối tượng có nhiều hoạt động quan trọng trong hệ thống,

  • Dựa vào các ca sử dụng để xây dựng biểu đồ trạng thái,

  • Dựa vào các thuộc tính liên quan để định nghĩa các trạng thái.

Tóm lại, biểu đồ trạng thái là cần thiết vì nó giúp người phân tích, thiết kế và người lập trình hiểu, nắm bắt được các hành vi ứng xử của các đối tượng tham gia vào các ca sử dụng. Họ không chỉ cài đặt đối tượng mà còn cần phải làm cho chúng thực hiện những công việc mà hệ thống yêu cầu. Tuy nhiên, biểu đồ trạng thái không được sử dụng để sinh mã tự động trong khâu lập trình ở bước sau.

Biểu thức trạng thái trong phân tích hướng đối tượng cũng tương tự như sơ đồ khối trong phân tích có cấu trúc, nó mô tả các bước cần thực hiện (thuật toán) của hệ thống.

0