我的要求:我想根据下面描述的案例提出一个合适的 UML 图。我需要知道哪种 UML 最适合这种情况。
案例:两个以“申请表”形式存在的对象 A 和 B 相互交互。对象 A 中的某些事件触发对象 B 的状态变化。两个对象在一个 Use Case 中相互交互.
我尝试使用状态图,但它失败了,因为这里两个对象相互交互以更改一个对象的状态,而状态图适合仅描述一个对象的状态变化,而不显示与导致状态的另一个对象的交互改变。
我的要求是在同一个图表中同时显示交互和状态变化。这可能吗?
对此有什么建议吗?哪个 UML 图适合这个?
最佳答案
UML 对每种行为使用两种不同的图表,一种用于状态 ( State Machine Diagram ),一种用于交互 ( could be the communication diagram 或 sequence diagram )。
由于类的接口(interface)在状态改变时不会改变(通过 applying the State Pattern for example ),所以从调用者的角度来看,交互不应该真正改变,当然,内部可能会发生各种各样的事情,但是这应该不重要。
我对此进行建模的方式是描述您的对象所处的状态以及将出现的场景。这将导致一些交互以及可能的状态变化。然后选择一个新场景,或者使用前一个场景的最终状态作为起点,或者描述一个新的开始状态。
这样每个场景都被清晰地定义,交互图显示了对象如何交互,并且突出显示事件状态的多个状态图可以显示状态的变化,从而显示不同对象的行为。
没有任何图表可以将两者完美地结合起来,因为一个(状态机)是静态图,显示所有可能的选项,而另一个描述交互。
当然,您可以按照交互类型图中的不同对象的建议(ObjectA/State)使用创意命名,但这不会产生非常清晰的图片。您在这里试图描述的是一个故事、一系列事件以及这些事件如何影响对象的不同状态。因此,您的场景是高层的故事,通信图是更详细级别的故事,状态机图是特定情况的快照。
关于uml - 哪种 UML 图合适?两个对象相互作用,其中一个正在改变另一个对象的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25600958/