面向对象分析与设计 - 动态建模



动态模型表示系统的与时间相关的方面。它关注的是系统中对象状态随时间的变化。主要概念包括:

  • 状态:对象生命周期中特定条件下的情况。

  • 转换:状态的变化。

  • 事件:触发转换的发生。

  • 动作:由于某些事件而发生的连续且原子的计算,以及

  • 转换的并发性。

状态机模拟对象在其生命周期中由于某些事件以及由于事件而发生的动作而通过多个状态的过程。状态机通过状态转换图以图形方式表示。

状态和状态转换

状态

状态是对象在特定时间段内具有的属性值的抽象。它是在对象生命周期中持续有限时间段的一种情况,在此期间它满足某些条件,执行某些活动或等待某些事件发生。在状态转换图中,状态由圆角矩形表示。

状态的组成部分

  • 名称 - 字符串区分不同的状态。状态可能没有名称。

  • 进入/退出动作 - 表示进入和退出状态时执行的活动。

  • 内部转换 - 状态内的变化,不会导致状态改变。

  • 子状态 - 状态中的状态。

初始状态和最终状态

对象的默认起始状态称为其初始状态。最终状态表示状态机的执行完成。初始状态和最终状态是伪状态,除了名称外,可能不包含常规状态的组成部分。在状态转换图中,初始状态由填充的黑色圆圈表示。最终状态由另一个未填充的黑色圆圈包围的填充的黑色圆圈表示。

转换

转换表示对象状态的变化。如果对象在发生事件时处于某个状态,则对象可能会执行某些活动(取决于指定的条件)并更改状态。在这种情况下,据说发生了状态转换。转换给出了第一状态和新状态之间的关系。转换以从源状态到目标状态的实心有向弧线图形表示。

转换的五个部分是:

  • 源状态 - 受转换影响的状态。

  • 事件触发器 - 导致源状态中的对象在满足保护条件时发生转换的事件。

  • 保护条件 - 布尔表达式,如果为真,则在接收到事件触发器时导致转换。

  • 动作 - 由于某些事件而对源对象发生的不可中断的原子计算。

  • 目标状态 - 转换完成后到达的状态。

示例

假设一个人从X地乘坐出租车到Y地。该人的状态可能是:等待(等待出租车)、乘坐(他已搭乘出租车并在乘坐)、到达(他已到达目的地)。下图描述了状态转换。

Transitions

事件

事件是一些可以触发对象或对象组状态转换的事件。事件在时间和空间上都有位置,但没有与其关联的时间段。事件通常与某些动作相关联。

事件的示例包括鼠标单击、按键、中断、堆栈溢出等。

触发转换的事件写在状态图的弧线旁边。

示例

考虑上图所示的示例,当乘客获得出租车时,从等待状态到乘坐状态的转换发生。同样,当他到达目的地时,最终状态达到。这两个事件可以称为Get_Taxi和Reach_Destination。下图显示了状态机中的事件。

Transition Events

外部事件和内部事件

外部事件是从系统用户传递到系统内对象的事件。例如,用户鼠标单击或按键是外部事件。

内部事件是从系统内的一个对象传递到另一个对象的事件。例如,堆栈溢出、除法错误等。

延迟事件

延迟事件是指那些不被对象在当前状态下立即处理,而是排队以便以后在其他状态下由对象处理的事件。

事件类

事件类表示具有共同结构和行为的一组事件。与对象类一样,事件类也可以组织成层次结构。事件类可能与其关联的属性,时间是一个隐式属性。例如,我们可以考虑航空公司航班起飞的事件,我们可以将其分组到以下类中:

Flight_Departs (航班号,出发城市,到达城市,航线)

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

动作

活动

活动是对对象状态的操作,需要一些时间段。它们是在系统内正在进行的执行,可以被打断。活动在活动图中显示,活动图描绘了从一个活动到另一个活动的流程。

动作

动作是作为某些事件的结果而执行的原子操作。原子是指动作是不可中断的,即,如果动作开始执行,它将运行到完成而不会被任何事件中断。动作可能会对已触发事件的对象或对该对象可见的其他对象进行操作。一组动作构成一个活动。

进入动作和退出动作

进入动作是在进入状态时执行的动作,无论导致进入该状态的转换是什么。

同样,在离开状态时执行的动作,无论导致离开该状态的转换是什么,都称为退出动作。

场景

场景是对指定动作序列的描述。它描述了对象经历特定动作序列的行为。主要场景描述了基本序列,次要场景描述了替代序列。

动态建模图

动态建模主要使用两种图:

交互图

交互图描述不同对象之间的动态行为。它包含一组对象、它们之间的关系以及对象发送和接收的消息。因此,交互模拟一组相关对象的 رفتار。两种类型的交互图是:

  • 序列图 - 它以表格方式表示消息的时间顺序。

  • 协作图 - 它表示通过顶点和弧线发送和接收消息的对象的结构组织。

状态转换图

状态转换图或状态机描述单个对象的动态行为。它说明了对象在其生命周期中经历的状态序列、状态转换、导致转换的事件和条件以及由于事件而产生的响应。

事件并发

在系统中,可能存在两种类型的并发。它们是:

系统并发

在此,并发在系统级别建模。整个系统被建模为状态机的集合,其中每个状态机与其他状态机并发执行。

对象内的并发

在此,对象可以发出并发事件。对象可能具有由子状态组成的状态,并且每个子状态中都可能发生并发事件。

与对象内并发相关的概念如下:

简单状态和复合状态

简单状态没有子结构。具有嵌套在其内部的更简单状态的状态称为复合状态。子状态是嵌套在另一个状态中的状态。它通常用于降低状态机的复杂性。子状态可以嵌套到任意多个级别。

复合状态可以具有顺序子状态或并发子状态。

顺序子状态

在顺序子状态中,执行控制以顺序方式从一个子状态传递到另一个子状态。在这些状态机中,最多只有一个初始状态和一个最终状态。

下图说明了顺序子状态的概念。

Sequential Sub-states

并发子状态

在并发子状态中,子状态并行执行,或者换句话说,每个状态在其内部都有并发执行的状态机。每个状态机都有自己的初始状态和最终状态。如果一个并发子状态在其最终状态之前到达其最终状态,则控制在其最终状态等待。当所有嵌套状态机到达其最终状态时,子状态会重新组合回单个流程。

下图显示了并发子状态的概念。

Concurrent Sub-states
广告