本篇内容主要讲解“行为状态机怎么理解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“行为状态机怎么理解”吧!
概要
行为状态机可以用于定义下面的场景
主动类的类目行为
一个行为化类目的除了类目行为以外的拥有行为。
没有对应的行为化类目的独立行为
对应行为特征的方法(即操作或接受)
抽象语法
语义
1、状态机
行为状态机包含了一个或多个区域,每个区域包含一个图(可能是分层的),图中又包含一组被被圆弧形迁移相互连接的顶点。当适当的事件发生时,状态机会被触发执行。状态机的特定执行表现为一组经过一个或多个区域有效路径的遍历,触发的方式是发行一个与图中有效触发条件相匹配的事件发生。触发条件匹配的原则会在后面描述。在这样一个遍历过程中,状态机实例可能会执行一个隐含的复杂的行为序列,这些行为和图中被通过的特定元素联系在一起(迁移效果,状态入口,状态出口行为等)
如果状态机有某种行为类目上下文,那么这个类目定义了哪些信号和调用事件可以适用于那个状态机,也定义了哪些特征对状态机拥有的行为可用。状态机的信号触发条件和调用事件触发条件根据这个类目的接受和操作被分别定义。这些特征可以被用于定义状态机的消息事件触发条件。
如果状态机没有行为类目上下文(即它是一个独立行为),那么它的触发条件不需要绑定到类目的接受和操作上。例如,这样的状态机可能被定义为以触发条件为模板参数的模板,这样,状态机可以通过为模板参数绑定合适的调用事件和信号事件来配合不同的上下文类目一起使用。
如果状态机定义了一个行为特征(操作或接受)的方法,那么状态机的参数应该和行为特征(参见13.2.3小节)的参数相匹配。这意味着通过参数,状态机执行可以参照行为特征的参数。否则,执行中的状态机实例访问分发的事件发生和它的关联数据的方法无定义(参见13小节)。
按照定义,状态机执行的调用导致被触发的效果(参见13.3.3小节)和一个因此而存在的,与这个执行相关联的事件池。状态机的这个事件池可能属于它的上下文类目对象,或者当状态机定义了一个行为特征的方法时,属于拥有的这个行为特征的类目的实例。
由于它的事件驱动性质,状态机执行可以是迁移中或状态内,在两者之间交替。当分发的某个事件和某个迁移的至少一个触发条件匹配时,它处在迁移中。在迁移中,它可能会执行若干与选中路径想关联的行为。
注意:当存在doActivity行为与活动状态配置相关联时,即使它存在与稳定状态配置中,状态机执行也可以是执行中行为。
2、区域
区域表示一个行为片段,它可以和其他的正交区域并发执行。如果两个或多个的区域被同一个状态拥有,或者在顶层时被同一个状态机拥有,那么就说它们彼此正交。一个区域变成活动状态(即开始执行)有两种情况,一种是它拥有的状态被进入,另一种情况是直接拥有它的状态机开始执行。每个区域包含一组顶点和迁移,由它们决定区域中的行为流程。它可以拥有自己的起始伪状态,也可以拥有自己的终止状态。
区域的缺省激活发生在它被隐含进入的时候,就是说,它不是被一个终止于区域元素顶点(例如状态或历史伪节点)的输入迁移进入的。但是应该
1)通过一个终止于包含区域的状态的(局部或外部)迁移,或者
2)如果是顶层区域,当状态机开始执行时。
缺省的激活意味着从起始于区域中的初始伪状态的迁移开始执行,如果定义了一个的话。如果区域中不存在初始伪状态,那么就没有特定的动作。一个可能的处理是将模式视为病态。也可以认为区域维持非激活状态,哪怕包含它的状态处于有活动状态。换句话说,包含区域的状态可以被认为是简单(叶子)状态。
相反地,明确的激活是在终止于区域包含的顶点的迁移进入区域时发生的。当正交状态的一个区域被明确地激活后,将导致它所有的正交区域被缺省激活。除非那些区域也是被明确进入的(多个正交区域可以通过开始于同一个分叉伪状态的迁移被明确的并发激活)。
3、顶点
顶点是一个抽象类,它抽取了状态图中各种的不同种类的具体节点(状态,伪状态或连接点参照)的特征。除了下面的例外,顶点可以作为任意数量的迁移的目的而且/或者源。顶点的语义依赖于它所表现的具体类型。通常,伪状态和连接点参照是过渡性的,意思是一个混合迁移执行只是简单地通过它们,作为输入迁移到达,作为输出迁移离开而不作停留。然而状态和终止状态表现为稳定顶点,当状态机执行进入它们以后,将停留在这些状态的内部,直到某些可以引起迁移的事件发生,或者状态机被终止执行。
到此,相信大家对“行为状态机怎么理解”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。