首页 文章

UML状态机图中状态表示的棘手情况 . 正交与否?

提问于
浏览
1

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状态机图:

UML state machine diagram

一方面,状态B和C不是完全独立的,另一方面,并发状态的概念使得图更简单 . 你能建议一个更好的解决方案,还是告诉我哪里错了?

1 回答

  • 1

    在“并行”或“非独占”状态机适用的情况下,您是否遇到过实际问题?

    似乎你正在寻找一个非常理论的概念 . 您的图示例,不显示任何“转换值”,看起来更像标准流程图 . (是的,我知道,状态机是专门的流程图)

    分层状态机也应具有“封装”或“隐藏”转换值 .

    U.M.L.流程图也支持表示“并行”或“非独占”路径,因此如果您必须为这种情况建模,您可能希望从它们开始,而不是状态机 .

    我工作的唯一分层状态机与解析器有关,altought,我知道它们也用于电路 .

    祝好运 .

相关问题