如何处理物理状态和逻辑状态之间的差异?

时间:2016-07-03 02:47:52

标签: uml

我有一个DVD播放器行为的状态图,它包含一个用于存放DVD的抽屉。在图中,关闭状态和打开状态表示抽屉关闭且抽屉分别打开时的状态。假设播放器处于打开状态时关闭,抽屉中没有CD并且抽屉打开,然后再次打开电源。逻辑上,抽屉处于关闭状态,但抽屉处于打开状态。然后,如果用户按下加载按钮,则系统打开已经处于打开状态的抽屉,因此没有效果。但是用户按下加载按钮是因为他看到抽屉处于打开状态,并希望抽屉在按下加载按钮时关闭。但如果他想要关闭抽屉,他必须再次按下加载按钮。我该如何解决这个问题呢? enter image description here

1 个答案:

答案 0 :(得分:2)

  

我该如何解决这个问题?

在实际操作中,您会依赖DVD播放器设备重启电源的某种通知:

  • 如果播放器在电源循环时自动进入定义良好的状态,则可以将逻辑状态与(推断的)物理状态同步。

  • 如果播放器有传感器来检测物理状态,您可以探测它们,然后将逻辑状态同步到该状态。

  • 您可以发布"打开"或"关闭"命令,检查命令是否成功,并同步到从中推断出的物理状态。