21状态图建模.ppt

21状态图建模.ppt

ID:48727092

大小:984.00 KB

页数:31页

时间:2020-01-20

21状态图建模.ppt_第1页
21状态图建模.ppt_第2页
21状态图建模.ppt_第3页
21状态图建模.ppt_第4页
21状态图建模.ppt_第5页
资源描述:

《21状态图建模.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1面向对象分析与设计状态图OOA&OOD叶文来2状态图状态图着眼于确定系统中某些对象的复杂行为。实时系统中应用较多状态图用于描述一个对象所处的可能状态以及状态之间的转换,并给出状态变化序列的起点和终点状态是对象处于某一表征的稳定情形,改变往往是由于响应事件或时间流逝引起状态图不必描述所有可能事件,只捕捉促使对象状态发生改变的事件3状态图建模,用于说明三个问题:这个对象可能处于的稳定状态;触发从状态到状态的转换的事件;以及当每个状态改变时发生的动作。强调从活动到活动的控制流(用活动图),强调对象的潜在状态和这些状态之间的转换(用状态

2、图)转换:状态:事件:4状态图基本元素电话机的状态图5状态(State)状态代表对象行为中的一个阶段在该阶段中对象要满足一些特定的条件,并可从事特定的活动,对象在某一状态保持有限的时间如空调:idle、cooling、standby对象所处的状态通过对象的属性的值表示状态表示成四角均为圆角的矩形6事件(Event)事件是指某个时刻发生的事情。如:用户按下按钮,123航班离开城市事件可以认为是事情一次简单发生,应认为不可再分和短暂的7事件类型信号事件(signalevent)信号指从一个对象到另一个对象的明确的单向信息流动,信号事件

3、是发送或接收信号的事件一般是异步事件发送信号通常关注信号接收事件变更事件(changeevent)满足某条件而引起的事件。通常用when/当引导如When(房间温度>30oC)When(电量<5%)When(疲劳程度>100%)8时间事件(timeevent)指在绝对时间上或某个时间间隔内所引起的事件如:调用事件对操作的调用的接收,一般是同步事件When(date=1/1/2007)After(10seconds)9事件和状态事件表示时间点,状态表示时间段事件和状态之间存在某种对称性状态对应着对象接收的两次事件之间的时间间隔如:电

4、话听筒拿起来之后,第一个号码拨出之前,电话线处于Dialtone状态10迁移和状态转换动作转换时发生的动作,对象的某个方法调用警戒条件(guardcondition)只有满足某一特定条件才迁移在事件发生时,警戒条件检测一次,满足条件才能迁移11子状态(嵌套状态)针对某状态进行的细化分为顺序子状态和并发子状态子状态继承父状态的所有转换12应用状态图考虑为单个具有复杂行为的状态依赖对象而不是状态无关对象建立状态图复杂的反应式对象软件控制的物理设备:汽车、微波炉事务处理及相关的业务对象:订单角色转换:对象可以改变其角色协议和合法序列通信

5、协议UI页面UI流控制器等13例:ATM14例:UI导航的状态图用状态图描述复杂的页面流(并不针对某个对象)15POS系统的处理销售用例状态图可以认为针对用例控制器对象(Register)状态建模16例题1下图描述了一个负责监视某些传感器的控制器的状态机17例题3为简易微波炉(只有一个按钮)建模18为简易的电子表建立状态图。19在图书馆中,购入书在半个月内为新书,以后为旧书。书无论新旧,都可以向外借阅。针对上述要求建立状态图。2021状态图实现对一个类/对象定义的状态图,构造类的方法的实现确保类的行为与状态图所指明的行为一致将状态

6、图映射到类。添加状态属性用来存放状态消息。将事件映射到一个方法,并将所需的所有状态转换和事件动作都嵌入到该方法中。22在事件里确定对象的状态转换23银行账户状态图银行账户不是处于借记状态就是处在透支状态。假定示例仅有的两个操作是向该账户存款或从该账户取款,监视条件和动作是根据在交易中涉及的存取款金额amount和账户的当前余额balance确定支持那个操作执行。账户透支时,不能进行取款24银行账户对象的状态图25记录当前状态可使用常数枚举,或在适当的数据成员中记录构造函数说明对象所处的初始状态publicclassAccount{

7、privatefinalintInCredit=0;privatefinalintOverdrawn=1;privatefinalintSuspended=2;privateintstate;publicAccount(){state=InCredit;}}26状态的操作,对每个状态使用case语句实现每个case表示来自特定状态由相应消息标示的转换转换之前需要检查监护条件如果需要改变状态,则给记录状态的属性赋以新值27账户类withdraw操作的可能实现publicvoidwithdraw(doubleamt){switch(s

8、tate){caseInCredit;if(amt>bal){state=Overdrawn;}bal-=amt;break;caseOverdrawn:caseSuspended:break;}}28组合状态是为了简化状态图,不需要单独的状态表示

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。