如何在UML中将类方法的调用指定为状态的入口行为

如何在UML中将类方法的调用指定为状态的入口行为,uml,state-machine,Uml,State Machine,以下内容如何用UML表示: 我有一个类,其行为被建模为状态机。入境时 对于该状态机中的特定状态,我想调用 类实例的操作(方法) 我试图找出一种正式的方式来捕捉上述关系。我知道一个状态的输入行为可以是不同的类型(例如FunctionBehavior)。类可以具有本质上是函数规范的操作(如函数typedef)。我不知道如何将函数指定为实现特定操作,然后从潜在的多状态输入行为中调用它。引用2.5的上层结构(第14.2.3.4.3章,第307页): 说明进入、退出和行动行为 状态可能具有关联的条目行为。

以下内容如何用UML表示:

我有一个类,其行为被建模为状态机。入境时 对于该状态机中的特定状态,我想调用 类实例的操作(方法)


我试图找出一种正式的方式来捕捉上述关系。我知道一个状态的输入行为可以是不同的类型(例如FunctionBehavior)。类可以具有本质上是函数规范的操作(如函数typedef)。我不知道如何将函数指定为实现特定操作,然后从潜在的多状态输入行为中调用它。

引用2.5的上层结构(第14.2.3.4.3章,第307页):

说明进入、退出和行动行为

状态可能具有关联的条目行为。此行为(如果已定义)在通过外部转换输入状态时执行。此外,状态还可能具有关联的退出行为,如果定义了该行为,则该行为将在状态退出时执行。 一个状态也可能具有相关的doActivity行为。此行为在输入状态时开始执行(但仅在状态输入行为完成后),并与可能与状态关联的任何其他行为同时执行,直到:

  • 完成(在这种情况下生成完成事件)或
  • 状态已退出,在这种情况下,doActivity行为的执行将中止
状态的doActivity行为的执行不受该状态内部转换触发的影响

这意味着您可以在类中定义在输入状态时执行的操作。您可以这样表示:

编辑:只需复制Geert在下面的评论,使其防水:-)


UML规范非常具体地说明了状态具有关联的行为。行为可能是操作的方法,但不一定是。因为行为本身是一个抽象的元类,所以它可以是任何活动、不透明行为、函数行为、交互、状态机或ProtocolStateMachine


引用第2.5节的上部结构(第14.2.3.4.3章第307页):

说明进入、退出和行动行为

状态可能具有关联的条目行为。此行为(如果已定义)在通过外部转换输入状态时执行。此外,状态还可能具有关联的退出行为,如果定义了该行为,则该行为将在状态退出时执行。 一个状态也可能具有相关的doActivity行为。此行为在输入状态时开始执行(但仅在状态输入行为完成后),并与可能与状态关联的任何其他行为同时执行,直到:

  • 完成(在这种情况下生成完成事件)或
  • 状态已退出,在这种情况下,doActivity行为的执行将中止
状态的doActivity行为的执行不受该状态内部转换触发的影响

这意味着您可以在类中定义在输入状态时执行的操作。您可以这样表示:

编辑:只需复制Geert在下面的评论,使其防水:-)


UML规范非常具体地说明了状态具有关联的行为。行为可能是操作的方法,但不一定是。因为行为本身是一个抽象的元类,所以它可以是任何活动、不透明行为、函数行为、交互、状态机或ProtocolStateMachine


托马斯,我认为这不完全正确。操作不是一种
行为
,而是一种
行为特征
@GeertBellekens“行为特征是通过行为实现(实现)的”,因此上述可以看作是一种“快捷方式”。我猜您仍然可以理解操作(BehavioralFeature)是由表示后者实现的条目(Behavior)执行的。UML规范非常具体地说,状态有一个关联的
行为。
行为
可能是操作的
方法
,但不一定是。由于
行为
本身是一个抽象的元类,所以它可以是
活动
不透明行为
函数行为
交互
状态机
协议状态机
中的任何一个,我不太明白您的编辑是如何处理@GeertBellekens注释的。由于操作本身并不与代码体相关联,因此由操作表示的条目行为没有多大意义。这只是一种实用的方法。尽管它们可能是一双不同的鞋,但上面显示的
someOperation
很可能是定义状态的类的方法。简单地说,你可以通过名字来匹配它。如果没有在类中定义一些操作,您还会做什么来实现行为呢?Thomas,我认为这不完全正确。操作不是一种
行为
,而是一种
行为特征
@GeertBellekens“行为特征是通过行为实现(实现)的”,因此上述可以看作是一种“快捷方式”。我猜您仍然可以理解操作(BehavioralFeature)是由表示后者实现的条目(Behavior)执行的。UML规范非常具体地说,状态有一个关联的
行为。
行为
可能是操作的
方法
,但不一定是。由于
行为
本身是一个抽象的元类,因此它可以是
活动
OpaqueBehavio