哪个UML图适合?两个对象交互,一个是改变其他对象的状态

时间:2014-09-01 07:38:57

标签: uml

  • 我的要求:我想根据下面描述的情况提出一个合适的UML图。我需要知道哪种UML最适合这种情况。

  • 案例:“应用程序表单”形式的两个对象A和B相互交互。对象A中的某个事件触发对象B的状态更改。两个对象相互交互以用于用例

我尝试使用状态图但它失败了,因为这里2个对象相互交互以改变一个对象的状态,而状态图适合描述一个对象的状态变化而不显示与导致状态的另一个对象的交互变化

我的要求是在同一个图表中同时显示交互和状态变化。是否可能?

关于这个UML图适合于此的任何建议?

3 个答案:

答案 0 :(得分:2)

UML为每个行为使用两个不同的图表,一个用于状态(State Machine Diagram),另一个用于交互(could be the communication diagramsequence diagram)。

由于类的接口在状态发生变化时没有改变(通过applying the State Pattern for example),因此从调用者的角度来看,交互不应该真正改变,当然,内部可能会发生各种各样的事情。 ,但那不应该真的重要。

我对此进行建模的方式是描述您的对象所处的状态以及将要播放的场景。这将导致一些交互和可能的状态变化。然后选择一个新场景,使用前一个场景的结束状态作为起点,或者描述一个新的起始状态。

这样,每个场景都被明确定义,交互图显示了对象如何交互,突出显示活动状态的多个状态图可以显示状态的变化,从而显示不同对象的行为。

没有图表优雅地结合两者,因为一个(状态机)是静态图,显示所有可能的选项,而另一个描述交互。

当然,您可以使用创意命名,如建议(ObjectA / State)作为交互类型图中的不同对象,但它不会产生非常清晰的图像。您在这里要描述的是一个故事,一系列事件以及这些事件如何影响对象的不同状态。因此,您的场景是高层次的故事,通信在更详细的层面上绘制故事,状态机图表显示特定情况的快照。

答案 1 :(得分:1)

在状态图中对状态进行建模:(Object / ObjectState)。

例如:
国家(A /未初始化),(A /初始化),......

那应该工作。

答案 2 :(得分:1)

状态图,序列图,通信图和@jessehouwing的整个答案很好,但我认为有一种更简单,更自然的方式:

(1) http://agilemodeling.com/style/activityDiagram.htm,图3.提交费用

enter image description here

请注意,这是UML 1.4活动图。目前的UML符号略有不同。虚线表示Object flow:章3.90.2.2对象流...输入到动作或从动作输出的对象可以显示为对象符号。一个 虚线箭头从动作状态绘制到输出对象,并且虚线箭头从输入对象绘制到动作状态。同一个对象可能(通常是)一个动作的输出和一个或多个后续动作的输入...

(2) http://www.uml-diagrams.org/document-management-uml-activity-diagram-example.html

enter image description here

显示如何组合对象状态和UML activity diagram的示例。图片是活动图,橙色矩形突出显示具有状态的对象([某种状态]中的部分)的点。紫色的矩形表示被抢劫的作者。