交互作用图(顺序、协作)汇编.ppt

  1. 1、本文档共100页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
为了创建一个订单行,客户对象必须向订单发送一个消息说明要订购的零件和数量。然后将创建一个新的订单行对象,并加入到该订单 在顺序图中,代表新对象的类元角色画在新对象被创建时的相应位置,创建新对象的消息终止于该角色符号,而不是像通常消息那样终止于一条生命线 :Order add(n,c) /Client c:CatalogueEntry :OrderLine OrderLine(n,c) getCost() return cost 顺序图中的对象创建 (1)对象创建 在这个交互过程中,创建了两个新链接,一个链接订单行和包含该订单行的订单,一个链接订单行和它的分类条目对象 顺序图中不描述关联角色 协作图不能显示地表明新对象创建的时间 为了区分在交互过程中创建的元素和交互一开始就存在的元素,对应于新对象和新链接的类元角色和关联角色用特性new予以标注 :Order 1:add(n,c) /Client c:CatalogueEntry :OrderLine 1.1:OrderLine(n,c) 1.1.1:cost:=getCost() {new} {new} {new} 协作图中的对象创建 (2)对象销毁 假若在客户向订单发送一个remove消息时,就从订单中删除订单行 引起对象销毁的消息用destroy构造型标注 被销毁对象的生命线以一个大叉终止 :Order remove(line) /Client line:OrderLine destroy 顺序图中的对象删除 协作图不能显示地表明对象被销毁的时间 被销毁的对象和链接都被用destroyed特性予以标注 :Order 1:remove(line) /Client line:OrderLine 1.1:destroy {destroyed} {destroyed} 协作图中的对象删除 (3)条件消息 协作图和顺序图都提供了表示有条件的消息传递的方式 这种条件消息和重复消息传递的表示法一起,原则上允许交互图详尽地展示算法的设计 在多数情况下,由于结果产生的图的复杂性,并不使用这种灵活性 假如零件的库存水平保存在目录条目对象中,并且当收到在订单中增加新订单行的消息时,订单对象在创建新订单行对象并将其加入订单之前,应该先检查库存有足够的所需类型的零件 :Order add(n,c) /Client c:CatalogueEntry :OrderLine [s=n]OrderLine(n,c) getCost() return cost getStockLevel() return s 顺序图中有条件的消息 为了表明创建订单行对象的消息只有在特定情况下才会发送,在消息上附有一个条件,由写在方括号中的布尔表达式组成 可以对协作图中的消息附加完全相同的表示法 一个特定消息的发送与否取决于发送时系统的状态 :Order 1:add(n,c) /Client c:CatalogueEntry :OrderLine 1.2[s=n]:OrderLine(n,c) 1.2.1:cost:=getCost() {new} {new} {new} 1.1:s:=getStockLevel () 协作图中有条件的消息 当进行交互时,两个可选消息中只有一个会被发送,这是通过让两个消息起源于同一个点来表示的 :Order c:CatalogueEntry :OrderLine [s=n]OrderLine(n,c) getCost() return cost getStockLevel() return s [sn]restock() 顺序图中的可选消息 (4)自返消息 和发送给其他对象的消息一样,对象发送的自返消息也会引起一个新的激活,但在这种情况下,新激活发生在已经有一个活动激活的对象中 这个新激活的递归性通过将新激活叠加在原有激活上表示 计算订单的总价格:首先获得每个订单行的价格,然后订单对象向自己发送一个消息计算订单的运输费用,作为对这个消息的响应,另一个消息发送到链接到订单的客户对象,以查明客户的地址,从这个地址姑且认为能够计算出订单的送货费用 :Order getTotal() /Client :Customer :OrderLine getShippingCost() getValue() * getLocation() * 递归激活 标注有self构造型的关联角色被用作表达由对象发送的自返消息的方式 :Order 1:getTotal() /Client :OrderLine :Customer 1.2.1:GetLocation() 1.1*getValue() 1.2:getShippingCost() 协作图中的自返消息 顺序图与协作图之间的转换 从顺序图转换成协作图 从seque

文档评论(0)

a5522235 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档