网站大量收购闲置独家精品文档,联系QQ:2885784924

UML 7章+从序列图到C++.pdf

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
UML7章从序列图到C

第7章 从序列图到C++ 在本章的一开始,我们会延续在前面章节里所提到的类图概念,说明序列图与类图之间的 关联性;随后介绍序列图的主要用途、常用元素以及对应的C++代码。此外,在最后一小节中, 我们还会介绍序列图的孪生兄弟—通信图。 7.1 序列图与类图的关联 类图未能提出操作的实现方法,这部分的细节设计,可通过序列图(sequence diagram ) 来呈现。虽然,我们可以从类图对应到C++程序中的类、属性、关系及操作的声明,但也仅止 于此,对于操作的实现方法,还得搭配序列图才能获得。 一般操作的实现方法,主要由下列四个部分组成。 1. 计算公式或算法—如果实现方法中,用到领域中独特的计算公式,或者是比较复杂特 殊的算法时,实践中通常会使用简单的代码或伪码(pseudo code )再搭配说明文字来记录。因 为过于细节的信息,并不适合采用图示来呈现,所以计算公式或算法无法记录在类图中,也不 适合记录在序列图中。 2. 控制流程(control flow )—实现方法中经常有各式的控制流程,例如条件控制、循环控 制。涉及到对象的流程控制,可以记录在序列图中;没有涉及到对象的部分,不会呈现在序列 图中,因为过于繁琐。在图7-1 的序列图中,使用了循环片段(loop fragment )来标记循环控制 内将调用哪几项操作。循环片段的图示采用带loop 的大方框。 3. 调用操作—对象通常通过调用其他对象的操作来达成合作目的,形成了一群对象交互的 情境,这是序列图表达的重点。所以在整张序列图中,横向的带箭头实线都代表一项调用,可 能是调用对象自身的操作,如图7-1 中的12号消息,但更多的情况是调用其他对象的公开操作。 4. 生灭对象—对象的产生与消灭也可以在序列图中表达,如图7-1 中的1~4号消息前方标记 了〈〈create 〉〉,即特别指出调用建构式,不同于调用一般的操作。 除了表达实现方法之外,更重要的是序列图还能够表达执行期间的一群对象,为了合力完 成某一个目的,调用操作的交互情况。所以,一个系统会有多张的序列图设计,每一张序列图 仅描述系统某个目的或情境下的执行期间对象的交互情况。不同于类图,由于系统只有一个内 部静态结构,所以逻辑上只有一张类图,实体上可能因为某个观点而将类图分成几张。 接着,通过下面这个案例来体验序列图7-1与类图7-2 的绝妙搭配。这个案例的执行结果如 图7-3所示,执行期间将输出如图7-4所示的一群对象,并且通过如序列图7-1 的交互,最终计算 第 7 章 从序列图到C++ 135 出该账户的总资产。 图7-1 序列图 程序清单7-1~7-9为C++ 的源代码,对应图7-1 的序列图消息序号,如下所示。 1. main.cpp中行号13—Account myAccount; 2. main.cpp 中行号14—myFund=new Fund(49.61); 3. main.cpp 中行号15—myRegularBid=new RegularBid(); 4. RegularBid.cpp 中行号7 、9和11—myItem=new BidItem(359.53); 5. main.cpp 中行号16—myRegularBid-setFund(myFund); 6. main.cpp 中行号17—myAccount.setRegularBid(myRegularBid); 7. main.cpp 中行号19—myRegularBid-getUnit(); 136 C++程序员UML实务手册 8. RegularBid.cpp 中行号23 、24—for控制流程及其中的itemObj[i]-getUnit(); 9. main.cpp 中行号20—myFund-getPrice(); 10. main.cpp中行号22—myAccount.calcAsset(); 11. Account.cpp中行号12到13—for控制流程及其中的regularBidObj[i]-calcAsset(); 12. RegularBid.cpp中行号29—getUnit() 13. RegularBid.cp

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档