首页 > 编程知识 正文

uml状态图的对象能有多个吗,uml对象图

时间:2023-05-03 15:07:01 阅读:175021 作者:352

状态图的含义1)状态机

状态机是记录给定时间状态的装置,可以根据各种输入,针对给定的每次变化改变状态或采取动作。 例如,计算机操作系统的进程调度和缓冲调度都是状态机。

在UML中,状态机由对象的各个状态和连接这些状态的转换组成,是表示状态和状态转移的图。

在面向对象的软件系统中,无论对象多么简单多么复杂,都必须经历从最初创建到最终消亡的完整过程。 此过程通常称为对象的生命周期。 一般来说,对象在其生命周期内不能完全孤立,必然会接受消息并改变自身,或者发送消息影响其他对象。 状态机用于描述对象在其生命周期中响应的时间所经过的状态序列,以及对这些事件的响应。在状态机的语境中,一个事件就是一次激发的产生,每个激发都可以触发一个状态转换。

状态机由状态、转换、事件、活动和动作五部分组成。

状态:

状态是对象生命周期中的状态,处于特定状态的对象必须满足特定条件、执行特定操作或等待特定事件。 一个状态的生命周期是有限的时间阶段。

转换:

过渡是两种不同状态之间的关系,表示对象在第一个状态下执行特定操作,并在满足特定条件时通过事件进入第二个状态。

事件:

事件是指在时间和空间发生的对状态机来说有意义的事情。 事件通常会引起状态的变迁,促使状态机从一种状态切换到另一种状态,例如信号、目标金额的创建和丢弃。

活动:

活动是指在状态机上执行的非原子操作。

动作:

动作是指可以在状态机上执行的原子操作。 原子操作意味着他们在运行中不能被其他消息中断,必须一直运行下去,最终状态的改变或回到一个值。

状态图的状态图本质上是状态机或状态机的特殊情况,它基本上是状态机内要素的投影,状态图包括状态机的所有特征

状态图根据事件的反映显示实体的动态行为,该行为表示实体根据当前状态对各种事件的反应方式。

在UML中,状态图由表示状态的节点和表示状态之间过渡的带箭头的直线组成。 状态转移由事件触发,状态和状态之间通过转移箭头连接。 每个状态图都有一个初始状态(实心圆),表示状态机的开始。 也有表示状态机结束的中止状态(实心圆)。 状态图主要由元素的状态、转换、初始状态、中止状态和判定等组成,简单的状态图如下。

1)状态:

状态用于对实体生命周期中的各种状态建模,实体始终保持状态一段时间。 状态用圆角矩形表示。 状态的呈现元素必须包括名称、导入和输出操作、内部过渡和嵌套状态。 下图是一个简单的状态。

状态名称

的是状态的名称,通常用字符串表示,其中每个单词的首字母大写。 状态名称可以包含任意数量的字符、数字和除冒号“:”以外的几个字符,可以是长的,也可以是连续的。 然而,必须注意,一个状态的名称在状态图所在的上下文中应该是唯一的,并且可以将该状态与其他状态区分开。

入口和出口的动作

一种状态可以有入口和出口行为,也可以没有。 入口动作和出口动作分别是进入和退出一个状态时执行的“边界”动作。

内部转换

不会导致状态变化的转换。 内部转换可以包含要进入此状态而必须执行的活动和操作。

嵌套状态

状态包括“简单状态”(Simple State )和“组成状态”(Composite State )。 单纯状态是指在意义上不可分解的、对象保持一定属性值的情况,单纯状态不包含其他状态。 另一方面,结构状态是指子状态嵌套在内部的状态,结构状态的嵌套状态图部分包括该状态的子状态。

2)转换:

在UML的状态建模机制中,过渡用带箭头的直线表示,一端与源状态连接,箭头指向目标状态。 还可以标记与此变换相关的选项,如事件、监视条件和操作,如下图所示。 注意:如果没有将触发转换的事件标记为转换,则会自动进行转换。

状态转移机制中应注意的五个概念是:

状态源:对象位于活动过渡之间的状态。 如果每个状态都是源状态,则在收到迁移触发事件或满足监视条件时,会激活分离迁移。 “目标状态”(Event State )是变换完成后对象的状态。 事件触发器(Event Trigger )是导致源状态转变的事件。 事件不会连续发生,而是只在时间的一点发生,目标受众通过接收事件,源状态发生变化,转换被激活,监护条件得到满足。 监护条件:布尔表达式。 如果要接收触发事件并触发转换,请计算表达式

值。如果表达式为真,则激活转换:如果表达式为假,则不激活转换,所接收到的触发事件丢失。动作(Action):是一个可执行的原子计算。

3)初始状态:
每个状态图都应该有一个初始状态,它代表状态图的起始位置。初始状态是一个伪状态(一个和普通状态有连接的假状态),对象不可能保持在初始状态,必须要有一个输出的无触发转换(没有事件触发器的转换)。通常初始状态上的转换是无监护条件的,并且初始状态只能作为转换的源,而不能作为转换的目标。在UML中,一个状态图只能有一个初始状态,用一个实心圆表示。

4)终止状态:
终止状态是一个状态图的终点,一个状态图可以拥有一个或者多个终止状态。对象可以保持在终止状态,但是终止状态不可能有任何形式的和触发转换,它的目的就是为了激发封装状态上的转换过程的结束。因此,终止状态只能作为转换的目标而不能作为转换的源,在UML中,终止状态用一个含有实心圆的空心圆表示。

5)判定:
活动图和状态图中都有需要根据给定条件进行判断,然后根据不同的判断结果进行不同转换的情况。实际就是工作流在此处按监护条件的取值发生分支,在UML中,判定用空心菱形表示。

状态图的作用

状态图的作用主要体现在以下几个方面。

状态图清晰地描述了状态之间的转换顺序,通过状态的转换顺序也就可以清晰地看出事件的执行顺序。如果没有状态图我们就不可避免地要使用大量文字来描述外部事件的合法顺序。清晰的事件顺序有利于程序员在开发程序时避免出现事件顺序错误的情况。例如,对于一个网上销售系统,在用户处于登录状态前是不允许购买商品的,这就需要程序员开发程序的过程中加以限制。状态图清晰地描述了状态转换时所必需的触发事件、监护条件和动作等影响转换的因素,有利于程序员避免程序中非法事件的进入。例如,飞机起飞前半小时不允许售票,在状态图中就可以清晰地看到,可以提醒程序员不要遗漏这些限制条件。状态图通过判定可以更好地描述工作流因为不同的条件发生的分支。例如,当一个班的人数少于10人的时候需要和其他班合为一班上课,大于10人则单独上课,在状态图中就可以很明确地表达出来。

总之一个简洁完整的状态图可以帮助一个设计者不遗漏任何事情,最大程度地避免程序中错误的发生。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。