📅  最后修改于: 2020-12-14 04:08:40             🧑  作者: Mango
动态模型表示系统的时间相关方面。它与系统中对象状态的时间变化有关。主要概念是-
状态,是对象生命周期中特定条件下的情况。
过渡,状态的改变
事件,触发转换的事件
动作,由于某些事件而发生的不间断的原子计算,以及
转换的并发。
状态机对对象在行为中由于某些事件以及由于事件而发生的动作经过多个状态的行为进行建模。状态机通过状态转换图以图形方式表示。
状态是对象在特定时间段内具有的属性值所给定的抽象。它是在对象生命周期中的有限时间段内发生的一种情况,其中该对象满足某些条件,执行某些活动或等待某些事件发生。在状态转换图中,状态由圆角矩形表示。
名称-字符串一种状态与另一种状态区分开。一个州可能没有任何名称。
进入/退出动作-表示进入和退出状态时执行的活动。
内部转换-状态内的更改不会导致状态更改。
子州-州内的州。
对象的默认开始状态称为其初始状态。最终状态指示状态机执行完成。初始状态和最终状态是伪状态,除了名称外,其他状态可能不包含任何常规状态。在状态转换图中,初始状态由实心黑色圆圈表示。最终状态由另一个黑色实心圆中的黑色实心圆表示。
过渡表示对象状态的变化。如果在发生事件时对象处于某种状态,则对象可以在指定条件下执行某些活动并更改状态。在这种情况下,据说已经发生状态转换。过渡给出了第一状态和新状态之间的关系。过渡由从源状态到目标状态的实心有向弧表示。
过渡的五个部分是-
源状态-受过渡影响的状态。
事件触发器-如果满足保护条件,则处于源状态的对象经历过渡的事件。
保护条件-一个布尔表达式,如果为True,则在接收事件触发器时导致转换。
行动-由于某些事件,在源对象上发生了不间断的原子计算。
目标状态-转换完成后的目标状态。
例
假设某人正在从X地点到Y地点乘坐出租车。该人的状态可能是:正在等待(正在等待出租车),正在乘坐(他已经乘坐出租车并且正在乘坐出租车)和到达(已经到达出租车)。目的地)。下图描述了状态转换。
事件是一些事件,可以触发一个对象或一组对象的状态转换。事件在时间和空间中具有位置,但是没有与之关联的时间段。事件通常与某些动作相关。
事件的示例包括鼠标单击,按键按下,中断,堆栈溢出等。
触发转换的事件与状态图中的转换弧一起写入。
例
考虑上图中所示的示例,当人乘坐出租车时,会发生从等待状态到乘坐状态的转换。同样,当他到达目的地时,将达到最终状态。这两个事件可以称为事件Get_Taxi和Reach_Destination。下图显示了状态机中的事件。
外部事件是那些从系统用户传递到系统内对象的事件。例如,用户的鼠标单击或按键是外部事件。
内部事件是从系统中的一个对象传递到另一对象的事件。例如,堆栈溢出,除法错误等。
延迟事件是那些在当前状态下不立即由对象处理的事件,而是排队在队列中,以便以后可以在其他某种状态下由对象处理。
事件类别表示一组具有共同结构和行为的事件。与对象类一样,事件类也可以按层次结构进行组织。事件类可能具有与之关联的属性,时间是隐式属性。例如,我们可以考虑航空公司的航班起飞事件,可以将其归类为以下类别:
Flight_Departs(Flight_No,From_City,To_City,路线)
活动是对需要一定时间段的对象状态的操作。它们是可以中断的系统中正在进行的执行。活动显示在活动图中,描绘了从一个活动到另一个活动的流程。
动作是由于某些事件而执行的原子操作。从原子上说,这意味着动作是不可中断的,即,如果动作开始执行,它将运行完成而不会被任何事件中断。动作可以对已在其上触发事件的对象或对该对象可见的其他对象执行。一组动作包括一个活动。
进入动作是进入状态后执行的动作,与导致状态的过渡无关。
同样,在离开状态时执行的动作,无论导致状态的过渡如何,都称为退出动作。
场景是对指定操作序列的描述。它描述了经历特定动作序列的对象的行为。主要方案描述了基本序列,次要方案描述了替代序列。
有两个用于动态建模的主要图表-
交互图描述了不同对象之间的动态行为。它由一组对象,它们之间的关系以及对象发送和接收的消息组成。因此,交互对一组相互关联的对象的行为进行建模。两种类型的交互图是-
序列图-它以表格形式表示消息的时间顺序。
协作图-它表示通过顶点和弧线发送和接收消息的对象的结构组织。
状态转换图或状态机描述单个对象的动态行为。它说明了对象在其生命周期中所经历的状态序列,状态的转换,导致转换的事件和条件以及事件引起的响应。
在系统中,可能存在两种类型的并发。他们是-
在这里,并发是在系统级别建模的。整个系统被建模为状态机的集合,其中每个状态机与其他状态机同时执行。
在这里,对象可以发出并发事件。对象可能具有由子状态组成的状态,并且并发事件可能会在每个子状态中发生。
与对象内并发相关的概念如下-
简单状态没有子结构。嵌套了简单状态的状态称为复合状态。子状态是嵌套在另一个状态内的状态。它通常用于降低状态机的复杂性。子状态可以嵌套到任意数量的级别。
组合状态可以具有顺序子状态或并发子状态。
在顺序子状态中,执行控制以一种顺序方式从一个子状态一个接一个地传递到另一个子状态。这些状态机中最多有一个初始状态和一个最终状态。
下图说明了顺序子状态的概念。
在并发子状态中,子状态是并行执行的,换句话说,每个状态中都有并发执行的状态机。每个状态机都有自己的初始状态和最终状态。如果一个并发子状态先于另一个并发状态,则控制将等待其最终状态。当所有嵌套状态机都达到其最终状态时,子状态会重新加入单个流。
下图显示了并发子状态的概念。