高焕堂《嵌入式UML设计》读书笔记

    科技2023-09-16  73

    第四章 UML如何表示组件状态的变化

    本章和前两章的关系

    第二章介绍组件之间相互传递消息,第三章介绍组件的组合与协作关系,本章则介绍组件的行为。

    消息激发组件的行为,行为塑造组件的新关系和状态。

    设计软件就是要充分描述组件的行为,掌握组件协作关系,灵活传递消息。

    如何捕捉组件(对象)的行为

    捕捉对象行为应关心的是:事件(Event)、状态(State)和动作(Action)。

    事件是外来的刺激。

    状态是对象特性的总合,包括静态及动态特性。如:电梯最大载重量是静态特性,电梯目前在第几层楼是动态特性。

    动作是有时间和状态共同决定的行为。

    事件、状态和动作是如何联系在一起的呢?

    我们看个简单的例子:

    爱人移情别恋了(事件),则痴情者心碎了(状态改变了),竟然吃香蕉皮了(行为也改变了)。

    如何设计状态

    我们先以电梯为例来看下可能的设计方式:

    图一:

    图二: 图三:

    如果我们关注电梯的使用频率,显然图一最能展示我们关注的信息;

    如果我们关注电梯是否故障,显然图二最能展示我们关注的信息;

    如果我们是正在等待电梯的乘客,显然图三最能展示我们关注的信息。

    所以,以上状态设计都没有错。

    由上述例子,我们得知设计状态并非要去找系统本质上有多少种状态,而是要看分为哪些状态最能帮助组织您的软件程序,以达到控制系统的目标。

    如何在UML中展示事件、状态与动作

    我们使用UML的 状态转换图 来表达事件、状态与动作。

    通过前一节讲述的方法确定状态后,跟状态改变相关的事件和动作也就确定了。

    我们用下图的形式来展示事件、状态与动作:

    以下还是以电梯为例:

    电梯有两个状态:故障维修、正常使用;

    电梯正常使用(状态)时,发生故障(事件),则通知维修人员(动作),同时电梯转变为故障维修(状态);

    电梯故障维修(状态)时,维修完成了(事件),则电梯转变为正常使用(状态)。

    Processed: 0.017, SQL: 8