- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
最近下载
- ECLIPSE局部网格加密做法.ppt
- 如何利用团体标准做好患者跌倒评估和预防PPT.pptx
- 2022年湖南长沙中考语文试题【含答案】.docx VIP
- 2023年湖南长沙中考语文试题.pdf VIP
- 2024年镇村(社区)后备干部考试复习题库 .pdf VIP
- 数学-湖南省长沙市(炎德英才大联考)长郡中学2025届高三上学期月考试卷(三)试题和答案.docx
- 最新经典数学函数图像大全-数学函数图像-函数图像全.docx
- 2024届高考英语作文复习专项读后续写:雀斑烦恼任务单素材.docx VIP
- 2024 年度民主生活会“四个对照”方面(存在问题、原因剖析及整改措施).docx VIP
- 托福词汇词以类记-张红岩(完整有目录)经典.pdf
文档评论(0)