UML核心技术学习(五)

第五章       动态建模

       所有系统均可表示为两个方面:静态结构动态行为类图(class diagram最适合于描述系统的静态结构:类、对象以及它们之间的关系;而状态序列协作活动图则适合于描述系统的动态行为,即描述系统中的对象在执行期间不同的时间点是如何动态交互的。

       对象是如何进行通信以及通信的结果如何则是系统的动态行为,对象通过通信来协作的方式以及系统中的对象在系统的生命周期中改变状态的方式是系统的动态行为。一组对象为了实现一些功能而进行通信称之为交互,可以通过序列图状态图活动图来描述:

l         状态图:状态图描述对象在生命周期内处于哪些状态,每一种状态的行为以及什么样的事件引起对象状态发生改变

l         序列图:描述对象如何相互交互通信。序列图中最重要的是时间,通过它,可以看出为了完成某种功能一组对象如何发送和接收一序列消息(时间)

l         协作图:协作图也是描述对象交互的,但侧重于空间的协作,即明确地给出对象间的关系(链接)(空间)

l         活动图:描述对象的交互,侧重于工作的描述,当对象相互交互时,需要执行一些工作或活动(活动)

除了静态结构和动态行为外,还可以从功能的角度来描述系统。用例就是从功能的角度来描述系统的:它描述角色如何使用系统

5.1   对象之间的交互-消息

       在所有动态图(如上四种图)中,消息是作为对象间的一种通信方式来表示的,具体来说,消息是连接发送者和接收者的一根箭头线,箭头的类型表示消息的类型

l         简单消息:表示普通的控制流,可以表示一个同步消息的返回

l         同步消息:一个嵌套控制流,一般表示一个操作调用

l         异步消息:异步控制流中,没有直接的返回给调用者,发送者发送完消息后不需要等待消息处理完成而是继续执行

5.2   状态图

       状态图主要用来描述对象、子系统、系统的生命周期。通过状态图可以了解到一个对象所能到达的所有状态以及对象收到的事件(收到消息,超时,错误,条件满足)对对象状态的影响等。所有的类,只要它有可标记的状态和复杂的行为,都应该有一个状态图

5.2.1   状态和转移

       所有对象均有状态:状态是对象操作的前一次活动的结果,通常,状态由对象的属性值以及指向其他对象的链来决定的

       当某些事情发生时对象的状态发生改变,我们称改变对象状态的事情为“事件”

       动态型表现在两个方面:交互内部状态改变交互描述对象的外部行为以及对象如何与其它对象交换信息;内部状态改变描述对象是如何改变其状态的

       一个状态包含三个部分:状态的名称、可选的状态变量名和变量值、活动表

活动表中常使用三种标准事件:进入、退出、做;语法-  事件名 参数表 ‘/’ 动作表达式

5.2.1.1 事件说明(Event-Signature

       event-signature”由事件名、参数、触发状态转移的事件、与此事件有关的附加数据组成,语法:    参数名 ‘:’ 类型表达式,参数名 ‘:’ 类型表达式……

       如图:在“空闲”状态,将属性值timer的值置0,然后连续递增timer的值,直到“下楼”或“上楼”事件的发生或守卫条件“timer=超时值”成真

5.2.1.2 守卫条件(Guard-Condition

       守卫条件是状态转移中的一个布尔表达式,如果将守卫条件和事件说明放在一起使用的话,则当且仅当事件发生且布尔表达式成立时,状态转移才发生,几个示例如下:

       [ t = 15sec ]

       [ number of invoices > n ]

       withdrawa1 (amount) [ balance >= amount ]

5.2.1.3 动作表达式(Action-Expression
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值