当状态依赖于函数时,模型状态机如何?

时间:2010-05-06 09:22:05

标签: uml

我有一个Contract类。合同有效期为2010年1月1日至2010年12月31日。

它可以处于Active或Passive状态,具体取决于我向实例询问其状态的日期。 恩。如果我问2010年7月4日,它处于州活跃状态,但如果我问2011年1月1日,它就处于被动状态。

状态机图:

从开始状态,它应该转到下一个状态? 我正在考虑伪状态“默认”,其中一个入口函数决定下一个要进入的状态,然后是一个具有Active和Passive的子状态机器,然后是一个删除时的End状态。

但这对于这样一个微不足道的问题似乎很复杂。

你会怎么做?

1 个答案:

答案 0 :(得分:0)

嗯,你要么做你所描述的,当有人试图在没有事先约会事件的情况下使用联系人时允许合同处于无效(开始/结束)状态,或者你可以尝试将呼叫添加到在构造函数中运行,因此您的合约立即处于正常状态。可能还有其他解决方案,但您应该考虑合同上可能发生的其他事件(消息/方法调用)而不是日期。有些可能也会影响stae。 BTW。当您不是嵌入状态机而只将开始和结束连接到主动和被动状态时,您的解决方案就不那么复杂了。