当试图展示一个类的行为如何从一种方法流向另一种方法时,最好使用哪种 UML 图类型?
我正在尝试绘制现有代码的图表,我正在查看的行为主要涉及私有方法调用,以及对类外部静态对象的一些调用。在这种情况下,我认为序列图不会提供最好的细节,因为除了前面提到的极少数静态调用之外,所讨论的类不与任何其他类交互。
在这种情况下什么最适合?
当试图展示一个类的行为如何从一种方法流向另一种方法时,最好使用哪种 UML 图类型?
我正在尝试绘制现有代码的图表,我正在查看的行为主要涉及私有方法调用,以及对类外部静态对象的一些调用。在这种情况下,我认为序列图不会提供最好的细节,因为除了前面提到的极少数静态调用之外,所讨论的类不与任何其他类交互。
在这种情况下什么最适合?
根据UML上层结构(http://www.omg.org/spec/UML),在UML中存在两种行为:涌现行为和执行行为。
一个执行行为是由一个对象(它的宿主)执行的,是对这个对象行为的描述。执行行为直接由调用该对象的行为特征或其创建引起。在任何一种情况下,它都是某个相关对象执行操作的结果。行为可以访问其宿主对象的结构特征。可以承载行为的对象由 BehavioredClassifier 元类的具体子类型指定。涌现行为源于一个或多个参与者对象的交互。如果参与的对象是一个更大的复合对象的一部分,那么一个新出现的行为也可以被看作是间接描述容器对象的行为。然而,紧急行为可能来自参与者对象的执行行为。
您可以通过活动或交互对行为进行建模(实际上您也可以使用状态机和用例)。活动更适合模拟执行行为,而交互则更适合模拟紧急行为。
现在,如果您的类有很多部分,并且您想要建模的行为包括其部分的“复杂”交互,那么交互图(序列)可能是正确的选择。否则,如果您需要建模的行为由一系列原子动作组成,则活动可能会更好。考虑在 UML 中有一个特定的操作来表示方法的调用 (CallOperationAction),该方法将您可以通过专用操作 (ReadSelfAction) 检索的对象引用作为输入引脚。还有一个读取对象属性的动作(ReadStructuralFeatureAction)。还要检查可执行 UML 模型的基础 (FUML) http://www.omg.org/spec/FUML
虽然前面的所有答案都是正确的,但我想添加使用状态机来定义类的行为的选项。状态机允许您显示类的当前状态以及当调用方法或接收事件时类的状态如何变化。由于您声明您主要是在为一个类建模,我认为最重要的是要展示的是可以做什么(可以调用哪些方法调用),具体取决于当前状态以及这些方法调用如何影响类的状态。我认为我真正喜欢状态机的一个原因是它们具有相对明确定义的语义,并且还可以使用复合和正交状态在不同级别显示信息。
I would recommend collaboration diagram (UML 1.x) renamed to Communication diagram (UML 2.x). This may be better than sequence diagram, better because it may be more readable in your case.
A Communication diagram models the interactions between objects or parts in terms of sequenced messages. Communication diagrams represent a combination of information taken from Class, Sequence, and Use Case Diagrams describing both the static structure and dynamic behavior of a system.
总的来说,您有 2 个选择(根据@Silli 的回答):序列图或活动图。我可能会建议将序列诊断作为首选,但是您说您认为这不合适。你能详细说明为什么吗?
也许这是条件逻辑?如果是这样,活动图可能是更好的选择。它具有比序列图更直观的语法来显示控制流。您还可以在单独的泳道中显示静态对象 - 从而清楚地区分对外部对象的调用。如果这与您相关,您还可以说明并行行为。如果有帮助,这里有一些很好的例子。
hth。