【发布时间】:2012-06-01 11:05:21
【问题描述】:
UML 2.0 中有限状态机的分层表示提供了很好的信息压缩,因此您不必描述所有可能的状态组合。 UML 还提供了所谓的正交状态,它们不是相互排斥的。 据我理解这个想法,如果一个对象在这些状态下产生一些活动以响应相同的事件,那么对应于每个状态的活动应该简单地组合起来。在从遗留 C++ 代码对 UML 状态机图进行逆向工程时出现了这个问题。给出精炼的C++代码和UML图:
void CSomeClass::somePublicMethod()
{
if (false == m_A)
{
return;
}
if (true == m_B)
{
m_C = otherMethodWithSideEffects();
}
if (false == m_C)
{
// some logic with side effects and state transitions
return;
}
// other complex logic with side effects and state transitions
}
UML状态机图:
一方面状态 B 和 C 不是完全独立的,另一方面并发状态的概念使图表更简单。您能否提出更好的解决方案或 告诉我哪里错了?
【问题讨论】:
标签: uml diagram state-machine