状态图是系统分析的一种常用的工具,它通过建立类对象的生存周期模型来描述对象随时间变化的动态行为。系统中对象状态的变化是最容易被发现和被理解的,因此在UML中用状态图来展现对象状态的变化。
状态机是展示状态和状态转换的图。在面向对象分析与设计中,对象的状态、状态的转换、触发状态转换的事件、对象对事件的响应(即事件的行为)都可以用状态机来描述。UML用状态机对软件系统的动态特征建模。通常一个状态机依附于一个类,并且描述一个类的实例(即对象)。状态机包含了一个类的对象在其生命期间所有状态的序列以及对象对接收到的事件所产生的反应。状态机可以精确的描述对象的行为:从对象的初始状态起,开始响应事件并执行某些动作,这些事件引起状态的转换;对象在新的状态下又开始响应状态和执行动作,如此连接进行直到终结状态。
状态机有两种可视化方式:分别为状态图和活动图
状态机的组成部分:
(1)状态表示一个模型在其生存期内的状况,如满足某些条件、执行某些操作或等待某些事件。一个状态的生存期是有限的一个时间段。
(2)转换表示两个不同状态之间的联系,事件可以出发状态之间的转换。
(3)事件是在某个时间产生的,可以触发状态转换的部分,如信号、对象的创建和销毁、超时和添加的改变等。
(4)活动是状态机种进行的一个非原子的执行,由一系列动作组成。
(5)动作是一个可执行的原子计算,它导致状态的变更或者返回一个值。
状态机不仅可以描述用例、协作和方法甚至整个系统的动态行为。
状态图:一个状态图表示一个状态机,主要用于表现从一个状态到另一个状态的控制流。它不仅可以展现一个对象拥有的状态,还可以说明事件(如消息的接收、错误、条件变更等)如何随着时间的推移来影响这些状态。
(1)状态:状态定义对象在其生命周期中的条件或状况,在此期间,对象满足某些条件,执行某些操作或等待某些事件。状态用于对实体在其生命中状况建模。它是状态机的重要组成部分,它描述了状态所在对象状态行为的执行所产生的结果。
(2)转换:包括事件和动作。事件是发生在时间空间上的一点值得注意的事情。动作是原子性的,它通常表示一个简短的计算处理过程(如赋值操作或算术就算)。
活动图是UML用于对系统的动态行为建模的另一种常用工具,它描述活动的顺序,展现从一个活动到另一个活动的控制流。活动图本质上是一种流程图。活动图被设计用于描述一个过程或操作的工作步骤,从这方面理解,它可以算是状态的一种扩展方式。活动图是UML中描述系统动态行为的图之一,它用于展现参与行为的类的活动或动作。
活动:是在状态机中一个非原子的执行,它由一系列的动作组成,动作由可执行的原子计算组成,这些计算能够使系统的状态发生变化或返回一个值。
活动图与流程图的区别:
(1)流程图着重描写的是处理过程,它的主要控制结构是顺序、分支和循环,各个处理过程之间有严格大的顺序和时间关系;而活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。
(2)活动图能够表示并发活动的情形,而流程图不能。
(3)活动图是面向对象的,而流程图是面向过程的。
活动图与状态图的联系和区别:
活动图被设计用于描述一个过程或操作的工作步骤,从这方面理解,它可以算是状态的一种扩展方式。
区别:状态图描述一个对象的状态以及状态的改变,而活动图除了描述对象状态之外,更突出了它的活动。
各种动态图的区别:
UML的动态图包括交互图、状态图和活动图等。
交互图、状态图和活动图都是为了说明系统行为模型而建立的,各自的侧重点不同。区别在于:
(1)状态图是为一个对象的生命期间的情况建立模型。
(2)交互图(时序图和协作图)表示若干对象在一起工作完成某项服务;
(3)活动图描述活动的序列,建立活动间控制流的 模型。
总结的不好:希望读者可以提出建议,感谢您的阅读!