- 4
- 0
- 约5.88千字
- 约 68页
- 2021-11-19 发布于广东
- 举报
第4章 动态模型之状态图、顺序图、协作图和活动图;§4.1 状态图(Statechart Diagram);一、状态图中的基本元素
基本元素包括:
状态、关系(转移)、判断、事件和动作。
1. 状态(State)
状态:是指在对象的生命期中的某种状况,在此期间
对象将满足某个条件、或执行某个动作、或等
待某个事件。
说明:每个对象都有状态,一个状态表示该对象执行
了之前活动后的结果。
其中:状态可以细分为不同的类型: ; ⑶ 一般状态: ;⑷ 组合状态(composite state)
组合状态:一个含有“子状态(substate)”的状态
子状态:嵌套在另一个状态中的状态 ;⑸ 历史状态(history state)
历史状态:是一个伪状态(pseudostate),其目的是记住从组合
状态中退出时所处的子状态。当再次进入组合状态
时,可直接进入这个子状态,而不是再次从组合状态
的初态开始。;;2. 关系
状态与状态之间的关系是标有“事件”字符串的单向关联关系。也可以没有“事件”。
;4. 判定
一个判定是一个状态同两个以上状态之间的一种关系,工作流在此处分支转移。
判定符号:;二、事件(event); 1.调用事件(Call event):
? “调用(Call)”
是指在一个过程的执行点激发一个操作,它将一个控制线程暂时从调用过程转移到被调用过程。
? 调用事件(Call event)
指的是一个对象对调用(Call)的接收,这个对象利用状态转换而不是利用固定的处理流程实现操作。
说明:
调用事件分为同步调用和异步调用两种;如果调用者需要等待操作的完成,则是同步调用;反之则是异步调用。
调用事件的语法格式如下: ;例:设有登录窗口和Login类, Login类中暂时没有属性 ;其描述“准备登录”状态到“登录”状态过程的状态图: ; 2.变化事件(Change Event):
变化事件指的是依赖于特定属性值的布尔表达式的条件满足时,状态发生改变。
变化事件用关键字“when”表示,其语法格式如下: ; 3. 时间事件(time event):
时间事件指的是满足某一时间表达式的情况的出现,例如到了某
一时间点或经过了某一时间段.
时间事件用关键字“after/when”表示,其语法格式如下:;;例1 :基于类Login的对象进行登录之状态图;例2:杀毒软件的定时杀毒过程可用状态图描述如下:;例3:;BOOL CEditDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
EditRes.Open(CRecordset::snapshot,NULL,CRecordset::none);
m_er1=EditRes.m_R1;
m_er2=EditRes.m_R2;
m_er3=EditRes.m_R3;
m_er4=EditRes.m_R4;
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
};void CEditDlg::OnUpButton()
{
// TODO: Add your control notification handler code here
if(!EditRes.IsBOF()) EditRes.MovePrev();
m_er1=EditRes.m_R1;
m_er2=EditRes.m_R2;
m_er3=EditRes.m_R3;
m_er4=EditRes.m_R4;
UpdateData(FALSE);
}
void CEditDlg::OnDownButton()
{
// TODO: Add your control notification handler code here
if(!EditRes
原创力文档

文档评论(0)