上海监理建设协会网站新乡微网站建设

当前位置: 首页 > news >正文

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