“人就是一个类,而你”、我”、张三”等都是“人这个类的一个实例,站着”、“躺着等都是对象的一个状态。
源状态:即受转换影响的状态
目标状态:当转换完成后对象的状态
事件:用来为转换定义一个事件,包括调用、改变、信号、时间四类事件
监护条件:布尔表达式,决定是否激活转换、
动作:转换激活时的操作
活动:当对象处于一个状态时,它一般是空闲的,在等待一个事件的发生。但是某些时间,你可能希望描述个正在进行的活动。在处于一个状态的同时,对象做着某些工作,并一直继续到被某个事件中断。语法表示:do/动作名
延迟事件:延迟事件是一种特殊的事件,它是指该事件不会触发状态的转换,当对象处于该状态时事件不会丢失,但会被延迟执行。例如,当E-mail程序中正在发送第一封邮件时,用户下达发送第二封邮件执令就会被延迟,但第一封邮件发送完成后,这封邮件就会被发送。这种事件就属于延迟事件。语法表示:事件/defer
变化事件:用关键字when,后面跟上布尔表达式。例如when(temperature)>120)/alerm( )
时间事件:用after或when
状态分为简单状态和复合(组合)状态。包含子状态的状态称为复合状态。复合状态包括顺序状态、并发状态和历史状态
如果一个组成状态的子状态对应的对象在其生命周期内的任何时刻都只能处于一个子状态,也就是说状态机图中多个子状态是互斥的,不能同时存在,这种子状态被称为顺序状态或互斥状态或不相交状态。在顺序状态中最多只能有一个初态和一个终态
ADSL拨号过程的状态机,它将拨号过程封装成一个组合状态“连接ISP”。最初的状态是“未连接”,当用户发出指令时,将进入“连接ISP”状态,如果在此过程中用户取消拨号或发现无拨号音,无应答音时将回到“未连接’状态,如果收到应答音,则进入“已连接”状态。
建立大致印象后再分析组合状态“连接ISP”,会发现组合状态中也包含一个初态和终态,这是复杂组合状态所包含的状态机的初态和终态
有时组成状态有两个或多个并发的子状态,此时称组成状态的子状态为并发子状态。
如果并发子状态中有一个子状态机比其它并发子状态先到达终态,先到的将等待,直到所有子状态到达终态。
图书管理系统中的图书主要有四种状态:新书进入流通状态、待借出状态、已借出状态、退出流通状态。对于购买的图书,图书管理员编制条码,完成入库操作后,图书进入流通状态。图书管理员将已编制条码的图书存放到规定的藏书地点,即图书上架此时图书进入待借出状态。当读者将图书借出后,图书便进入已借出状态。当读者归还所借图书后,图书又返回待借出状态。如果图书丢失或损坏不能继续借阅,则退出流通,此时图书进入退出流通状态。
根据下面的描述,绘制一副状态图:电话初始时处于“空闲”状态,当听筒被拿起后处于“激活”状态。听筒被拿起后,电话等待拨号,若在30秒之内拨号,电话将进入“拨号”状态,如果拨号正确则电话进入“正在接通中”状态,如果拨号不正确则会一直听到提示错误拨号。若拿起听筒30秒之内不拨号,则电话处于“超时”状态。在“正在接通中”状态下,若对方占线则电话进入“忙”状态,若对方不占线则进入“接通”状态,对方拿起听筒后,电话处于“通话”状态,若在通话中对方挂断则进入“挂起”状态。
UML分结构型图和行为型图,结构是静态的,有类图、对象图、构件图、部署图、包图。行为是动态的,有活动图、状态图、顺序图、通信图、用例图、时序图。每种图是从需求或设计的不同层面来描述模型,以便于所有参与者通过图形化的方式从各个角度了解产品。
活动图描述的是从一个活动到另一个活动的控制流,描述活动的顺序,活动表示处理事物的动作和状态。
活动描述:小张每天醒来后先看表是否到起床时间,如果没到继续睡觉;如果到了,抓紧时间起床,洗漱完毕后吃早餐,饭后出门。
活动图如下:
上图绘制的就是小张早晨日常生活的活动图,通过这种图形化模型可以把动作的流程性表达的更加清楚,动作的内容、流程、判断、交互、并发都能很好的表达。
活动描述:产品经理的工作流程,产品在立项前,先要分析市场,进行产品定位和可行性分析;项目成立后,要进行需求分析,通过需求分析编写出商业需求文档、市场需求文档和产品需求文档,之后,根据需求绘制原型产品设计、流程分析。这些工作完成后进入开发阶段:架构设计、概要设计、详细设计、代码开发、软件测试。
以上活动整理成活动图如下:
解读“产品生命周期”活动图:
上图是产品生产的整个生命周期(生产不包括产品的维护及运营),做产品前先要为产品进行定位,指明产品方向,之后可行性研究(技术可行性、经济可行性和社会可行性),这三种可行性是并行执行的。
项目立项后,对产品进行需求分析,需求阶段会出三个文档性成果物:商业需求文档(BRD)、市场需求文档(MRD)、产品需求文档(PRD)。在上图中把这三个文档用长方形框表示,长方形框表示对象,意思是经过需求分析后生成了的三个文档对象。对象可以做为下一个活动的输入,也可以是活动的输出,输入与输出的对象可以是一个或多个。之后,再经过原型设计、技术设计、开发、测试,最后产品上线。
对象用长方形框表示,对象的名称是名词。活动可以有多个输入和输出,对象可以成为活动的输入。
1、当用户下订单时,将创建一个Order类的实例用来存放订单的信息,该类还包含这对应的Oderitem
2、当“生成送货单”时,将根据Order类的实例创建多个DeliverOrder(送货单)的实例
3、当“修改订单项状态”之后,DeliverOrder对象的状态将变成finished
小张去必胜客饭店吃饭,发现要排队等待,他决定如果15分钟还轮不到就到隔壁肯德基吃饭,请绘制小张吃饭的活动图。
参数是一个对象节点,用一个小矩形框表示,有输入参数、输出参数和错误参数。
表示活动“计算利息”节点将接受三个输入参数:本金(principal)、利率(rate)、年限(year);如果传入的参数合法,那么将输出参数利息值(accrual);如果输入了错误的参数,则产生异常。
在活动图中,有时需要表示一个活动需要多次执行的情况。例如在图中,有三个活动节点“供应商送货”,“修改订单项状态”以及分支“所有订单项已送货完毕”都需要多次执行。 由于一个订单对应多个“送货单”,因此通过“分支”来表示其循环控制流,这样表示活动,并不准确。我们采用了扩展区来表示活动节点的循环执行。
如果一个动图又包含了子活动图,则称这种图为嵌套活动图(也称为主活动图)。当一个活动图很复杂,我们可以把其中的一组相关活动看作一个子活动图,这时,在嵌套活动图中,用子活动图的简图代替子活动图。我们可以将子图单独放在一个图中详细说明它的活动,然后,在嵌套活动图引用子活动图。
销售合同签订后,要进行核对。如果发现错误,则终止履约;如果没有错误,则要核对货物清单确定是否有货,还要核对付款单确定对方是否已经付款,只有这两项都完成,才可以发货。如果无货或对方尚未付款,则终止履约。
公司业务员打电话给客户,确定一个约定,如果约定的地点是在公司内部,那么行政部的同事需要为会面安排一间会议室,如果约定的地点是在公司外部,那么业务员需要用笔记本准备一份陈述报告。业务员与客户在约定的时间和地点见面,业务员准备好会议用纸,如果会议产生一个陈述,业务员需要记录下来备案。请绘制普通活动图和带泳道活动图
• 讲解了活动节点、初始节点和活动终点、转换、分支与监护条件、分岔与汇合等基本建模元素;逐步引出了泳道、对象流等控制流逻辑
• 介绍了其他复杂活动图
交互图表示类(对象)如何交互来实现系统行为。交互图具有如下两种形式。
1)顺序图(时序图)
它描述对象按时间顺序的消息交换过程,它体现出系统用例的行为。
2)通信图
它描述对象间的组织协作关系,它也可体现出系统用例的行为。
顺序图是两种类型的交互图之一。顺序图用来建模以时间顺序安排的对象交互,并且把用例行为分配给类(对象)。它是用来显示参与者如何采用若干顺序步骤与系统对象交互的模型。
2、对象的左右排列位置
对象的左右顺序并不重要,但是为了图面的清晰整洁起见,通常应遵循以下两个原则:
(1)把交互频繁的对象尽可能地靠拢
(2)把初始化整个交互活动的对象(有时是一个参与者)放置在最左边
表示对象的生存时间。生命线从对象创建开始到对象销毁时终止。
1、激活的概念
当一个对象没有被激活期时,该对象处于休眠状态,什么事都不做,但它仍然存在,等待新的消息来激活它。
当一条消息被传递给对象的时候,它会触发该对象的某个行为,这是就说该对象被激活了。
当一个对象处于激活时,表明该对象正在执行某个动作。
2、激活的符号
激活用一个细长的矩形框(在生命线上)表示。
矩形框的高度表示对象执行一个操作所经历的时间段,矩形的顶部表示动作的开始,底部表示动作的结束。
对象接收消息后可以由自己的某个操作来完成,也可以通过其他对象的操作来完成。
1.创建对象
创建对象的标记符如下图中的示例所示。有一个主要步骤用来把“create’‘消息发送给对象实例。对象创建之后就会具有生命线,就像顺序图中的任何其他对象一样。现在可以像顺序图中的其他对象那样来使用该对象发送和接收消息。在处理新创建的对象,或者处理顺序图中的任何其他对象时,都可以发送“destroys’”消息来删除对象。若要想说明某个对象被销毁,需要在被销毁对象的生命线上放一个X字符。
2.分支和从属流
有两种方式来修改顺序图的控制流:使用分支和使用从属流。控制流的改变是由于不同的条件导致控制流走向不同的道路。
对于复杂的控制流可以用组合片段来表示。例如:
上图展示了一个简化了的例子,其中有一些控制操作符。用户启动这个序列。第一个操作符是循环操作符,圆括号内的数字(1,3)表示循环执行的最少次数和最多次数。因为最少是一次,所以在检测条件之前主体至少执行一次。在循环内,用户输入密码,系统验证它。只要密码不正确,那么该循环就会继续。但是,如果超过了三次,那么无论如何循环都会结束。
下一个操作符是可选操作符。如果密码是正确的,那么就执行这个操作符的主体;否则就跳过该顺序图后面的部分。这个可选操作符的主体内还包括了一个并行操作符。正如图中所表明的,操作符可以嵌套。
并行操作符有两个分区:一个让用户输入帐号,另一个让用户输入数额。因为这两个分区是并行的,所以没有规定应该按照什么次序输入这两者,按照什么次序输入都可以。需要强调的是,并发并不总是意味着物理上的同时执行。并发其实是说两个动作没有协作关系,而且可按任意次序发生。如果它们确实是独立的动作,那么它们就可以交叠;而如果它们是顺序的动作,那么它们可以按任意的次序发生。
一旦并行操作符的两个动作都被执行过,那么该并行操作符也就执行完毕。在可选操作符中的下一个动作是银行向给用户交付现金。至此,顺序图执行完毕。
①从用例中识别交互过程;
②识别参与交互过程的对象:
③为每一个对象设置生命线,并确定对象的存在期限;
④从引发交互的初始消息开始,在对象生命线上依次画出交互的消息;
⑤如果需要,可以给消息增加时间约束,以及前置条件和后置条件
• 某中学的计算机分为三种:教师个人办公计算机、教室公用计算机和实验室计算机。现要为该学校开发一套设备报修系统,具体流程为:
1、故障计算机负责人登录网上的报修系统
2、填写报修信息:包括报修人、联系方式、地点、故障设备、故障描述、预约上门时间等。
3、电教主任在后台接到申请后,打印保修单,委派维修人员
4、维修人员维修后,报修人在报修单上签字确认
5、报修人员登录系统对此次维修做出评价
6、期间,报修人在提交报修申请,但电教主任未受理时,可以取消报修申请
7、报修结果分为以下几种:修好、维修好、报修人取消和故障不能重现等。
请绘制出该系统中“报修”用例的顺序图。
案例1:赤壁之战思考:孔明向哪些对象发送了消息?又接收了哪些对象发送的消息?
1顺序图和协作图都属于交互图,用来描述对象之间的动态关系。
2顺序图强调消息的时间顺序,协作图强调参与交互的对象的组织关系。
3顺序图和协作图在语义上是等价的,两者可以相互转换。