本书特色
面向对象技术以其显著的优势已经成为计算机软件领域的主流技术。本书是一本适合应用型人才培养的关于面向对象分析与设计的教材。
进行面向对象分析与设计需要一套概念与表示法。本书所采用的概念和表示法与UML2.0保持一致,但并不是全盘采用。本书提倡充分运用面向对象方法的基本概念,限制扩充概念的引入,通过加强过程指导而保持建模概念的简练。在中文术语方面,本书与国家行业规范《面向对象的软件建模规范——概念与表示法》完全一致。
进行面向对象分析与设计需要一套过程指导。本书所采用的开发过程,是在借鉴了较为流行的多种面向对象开发方法的基础上,根据青岛工程的成果和作者参与的科研及工程实践的经验总结出来的,该过程指导具有实用性和广泛的适应性。
本书注重于理论与实践相结合,通过给出大量的例题和内容较为详尽的案例分析以及对建模概念的具体运用,讲述了如何进行面向对象的分析与设计。
无
在20世纪90年代,面向对象技术以其显著的优势成为计算机软件领域的主流技术,随后该技术在大多数发达国家的软件开发中得到了相当广泛的运用。在我国的软件产业界,面向对象技术的学习与应用热潮出现于20世纪90年代后期,现在,越来越多的软件企业已经认识到:要在激烈的市场竞争中立于不败之地,掌握面向对象技术是势在必行的选择。
当前,产业界需要大量的掌握面向对象方法与技术的高级应用型开发人才。很多软件学院的软件工程硕士研究生教学中都开设了相应的课程,旨在使学生不仅会使用一种或者几种面向对象编程语言来编程,更重要的是能运用面向对象方法进行系统建模,即通过面向对象分析(ObjectOriented Analysis,OOA)和面向对象设计(ObjectOriented Design,OOD)建立系统的分析模型和设计模型。
邵维忠教授和杨芙清院士合著的两本著作[17][18],在广泛借鉴国际上各种OOA与OOD方法的同时,根据作者长期的研究与实践形成了自己的方法特色。其中最主要的特点有三条:一是提倡充分运用面向对象方法的基本概念,限制扩充概念的引入,通过加强过程指导而保持建模概念的简练;二是对UML 20所采用的与面向对象有关的概念进行了深入的解析,给出了自己的见解;三是其OOD部分比以往的著作内容更为详细,并且更强调用OO概念表达各种全局性的设计决策。
参考文献[17]和[18]是两部学术专著,作为教材比较适合于理论性强的研究生教学。本书旨在提供一本更适合针对应用型人才培养的教材。在思想体系上,本书继承了参考文献[17]和[18]所提出的理论和方法。但是作为一本适合应用型人才培养的教材,本书与它们相比有以下几点不同:
1)减少了理论阐述和对不同学术观点的讨论,增加了对如何运用概念的讲解。
2)着重讲述了面向对象的应用技术。
3)在各章的正文部分增加了例题,在各章之后给出习题。
4)通过案例讲述如何运用面向对象方法进行分析与设计。
本书既是一本教材,也可作为从事软件开发的工程技术人员的参考书。由于以上几个特点,本书与[17]和[18]相比具有更强的普及性,适合于更广大的读者群。
UML(Unified Modeling Language,统一建模语言)是一个由国际对象管理组织(OMG)采纳的建模语言规范,目前在软件工业界已被广泛接受。但UML的内容过于庞大和复杂(这是UML本身的复杂性造成的),多数工程技术人员和读者反映其学习难度很大。UML中的许多内容是用于构造UML元模型的,对于大多数面向应用的软件开发者来说,这些概念是用不着的。还有一些概念在软件系统的建模中很少使用,这是因为UML是各方面成果融合的产物,它要尽量适合各个领域。特别是UML不仅仅是用于面向对象软件开发的建模语言,它还可用于其他方面的建模,例如建筑业或机器制造业也可用它进行建模。基于上述因素,本书选用了UML中常用的概念来控制技术的复杂性。由于本书加强了运用基本概念解决各种复杂的分析与设计问题的过程指导,因此所选用的概念和表示法仍能保持表达能力的完整性。对本书而言,有些UML概念并非必不可少的,但为了方便读者理解这些常见概念,本书也适当进行了讲解,同时也给出了一些运用基本的OO概念代替这些概念的方法。
本书所采用的概念和表示法与UML保持一致。在中文术语方面,本书与我国的行业规范《面向对象的软件建模规范》完全一致。本书作者作为该规范主要起草者曾经与国内很多专家、学者和企业界的专业人士进行过反复研究讨论,从而对该规范达成共识。
进行软件开发,应该使用一定的过程指导。过程指导为完成软件系统开发的每一步提供详细指导,其中包括具体的模型、工具和技术。本书所采用的过程指导,是在借鉴了较为流行的多种开发过程的基础上,根据青鸟工程的成果和我们的科研及工程实践的经验总结出来的。
像使用其他开发方法一样,用面向对象方法进行软件系统建模的目的是要建立相应的模型。总的来讲,本书把模型分为功能需求模型、分析模型和设计模型。针对建立各种模型所使用的图以及其中的一些具体的模型元素,本书还给出了相应的规约。
对于面向对象的软件建模,需要有建模工具的支持。本书从此类工具所应具有的功能上进行了讲述,并介绍了一种具体的面向对象的软件建模工具。
以下简要地介绍本书的概貌,使读者对它有一个提纲挈领的了解。
第1章集中介绍了面向对象方法的基本思想和原则,解释了它的基本概念,论述了它的主要优点,并简介了它的发展历史和现状。最后,简单介绍了与本书密切相关的UML 20。
第2章首先概述了面向对象分析过程所面临的问题,然后对其进行了综述。在综述中阐述了面向对象分析模型和过程模型。
第3章全面地讲解了建立功能需求模型所需要使用的概念及其表示法,并详述了如何使用它们来建立功能需求模型。
第4章详细地讲述了类图中所使用的概念与表示法,并详述了如何使用它们来建立类图。
第5章讲述了建立辅助模型所用到的几种图:顺序图、协作图、状态机图、活动图和包图。其中详细地讲述这些图中所用的概念与表示法以及如何对它们进行应用。
第6章首先简述了面向对象设计的发展史,然后说明了分析与设计的关系,并阐述了面向对象设计模型和过程模型。
第7章详述了如何针对实现条件,对分析模型进行补充与调整。
第8章详述了进行人机交互设计所需要考虑的因素,并从分析和设计两个方面详述了如何进行人机交互设计。
第9章详述了什么是控制流,如何识别与定义控制流,以及如何设计控制流之间的同步。
第10章讲述了数据管理部分的设计。首先对数据库进行了简介,然后详细讲解了如何使用关系数据库系统对永久对象及它们之间的关系进行存储与检索。
第11章针对如何描述、构造系统的构件,详细讲解了构件图及其应用。本章还对部署图进行了简介。
第12章讲述了一些在面向对象设计中经常使用的设计模式。
第13章从耦合、内聚和复用等方面讲述了如何评价面向对象的设计模型。
第14章首先讲述如何把一个较为复杂的系统划分成一系列子系统,然后说明了如何对系统或子系统进行可视化建模,以及从那些方面建立系统的模型。此外还阐述了如何保证模型的一致性。
第15章通过一个具体的案例分析,说明如何用面向对象方法进行建模。对于本章给出的综合性习题,建议学生在学完第3章后,根据所选择的习题的难易程度组成2~3人小组,随着课程的进展逐步完成。
最后本书给出了两个附录。附录A讲述了面向对象的软件建模工具的构成,并给出了一个实例。附录B给出了对用面向对象方法进行软件系统建模所生成的文档的主要编制要求。
本书的研究工作和写作得到了北京大学邵维忠教授的大力支持。邵维忠教授投入了大量精力对书稿进行了审阅,提出了十分难得的宝贵修改意见,本书的很多内容也来自他作为第一作者的著作[17,18]。邵维忠教授具有严谨的治学态度、深厚的学术功底以及敏锐的洞察力,他的指导使我受益良多。在此致以衷心的感谢!
本书的研究工作和写作得到了杨芙清院士所领导的学术队伍的支持,也得到了国家863高技术研究发展计划项目(2007AA01Z127)、国家科技支撑计划(2006BAH02A02)、国家自然科学基金(60773152)和国家重点基础研究发展规划(2005CB321805)的资助。在此谨向上述单位表示衷心的感谢!
对书中存在的错误和疏漏之处,恳请各位读者给予批评指正。
麻志毅
2008年1月于北京大学
本书特色 面向对象技术以其显著的优势已经成为计算机软件领域的主流技术。本书是一本适合应用型人才培养的关于面向对象分析与设计的教材。 进行面向对象分析与设计需要一套概念与表示法。本书所采用的概念和表示法与UML2.0保持一致,但并不是全盘采用。本书提倡充分运用面向对象方法的基本概念,限制扩充概念的引入,通过加强过程指导而保持建模概念的简练。在中文术语方面,本书与国家行业规范《面向对象的软件建模规范——概念与表示法》完全一致。 进行面向对象分析与设计需要一套过程指导。本书所采用的开发过程,是在借鉴了较为流行的多种面向对象开发方法的基础上,根据青岛工程的成果和作者参与的科研及工程实践的经验总结出来的,该过程指导具有实用性和广泛的适应性。 本书注重于理论与实践相结合,通过给出大量的例题和内容较为详尽的案例分析以及对建模概念的具体运用,讲述了如何进行面向对象的分析与设计。
近20年里,计算机学科有了很大的发展,人们普遍认为,“计算机科学”这个名字已经难以涵盖该学科的内容,因此,改称其为计算学科(Computing Discipline)。在我国本科教育中,1996年以前曾经有计算机软件专业和计算机及应用专业,之后被合并为计算机科学与技术专业。2004年以来,教育部计算机科学与技术教学指导委员会根据我国计算机专业教育和计算学科的现状,为更好地满足社会对计算机专业人才需求,发布了《高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)》(以下简称《规范》),提出在计算机科学与技术专业名称之下,构建计算机科学、计算机工程、软件工程和信息技术四大专业方向。《规范》中四大专业方向的分类,在于鼓励办学单位根据自己的情况设定不同的培养方案,以培养更具针对性和特色的计算机专业人才。
为配合《规范》的实施,落实中央“提高高等教育质量”的精神,我们规划了“面向计算机科学与技术专业规范系列教材”。本系列教材面向全新的计算学科,针对我国高等院校逐步向新的计算机科学与技术专业课程体系过渡的趋势编写,在知识选择、内容组织和教学方法等方面满足《规范》的要求,并与国际接轨。本套教材具有以下几个特点:
(1) 体现《规范》的基本思想,满足其课程要求。为使教材符合我国高等院校的教学实际,编委会根据《规范》的要求规划本套教材,广泛征集在国内知名高校中从事一线教学和科研工作、经验丰富的优秀教师承担编写任务。
(2) 围绕“提高教育质量”的宗旨开发教材。为了确保“精品”,本系列教材的出版不走盲目扩大的路子,每本教材的选题都将由编委会集体论证,并由一名编委担任责任编委,最大程度地保证这套教材的编写水准和出版质量。
(3) 教材内容的组织科学、合理,体系得当。本套教材的编写注重研究学科的新发展和新成果,能够根据不同类型人才培养需求,合理地进行内容取舍、组织和叙述,还精心设计了配套的实验体系和练习体系。
(4) 教材风格鲜明。本套教材按4个专业方向统一规划,分批组织,陆续出版。教材的编写体现了现代教育理念,探讨先进的教学方法。
(5) 开展教材立体化建设。根据需要配合主教材的建设适时开发实验教材、教师参考书、学生参考书、电子参考资料等教辅资源,为教学实现多方位服务。
我们衷心希望本系列教材能够为我国高等院校计算机科学与技术等专业的教学作出贡献,欢迎广大读者广为选用。
编委会
麻志毅:暂无
序言
前言
第一部分概述
第1章面向对象方法概论2
11传统开发方法中存在的问题2
12面向对象的基本思想4
13面向对象的主要概念及基本
原则6
131面向对象的主要概念6
132面向对象的基本原则8
14面向对象方法的主要优点10
15面向对象方法的发展史及
现状简介13
16关于统一建模语言UML14
习题16
第二部分面向对象分析
第2章什么是面向对象分析18
21分析面临的主要问题18
22面向对象分析综述20
习题23第3章建立需求模型——用况图24
31系统边界24
32参与者25
321概念与表示法25
322识别参与者26
33用况27
331概念与表示法27
332用况与参与者之间的
关系28
333用况之间的关系29
334捕获用况31
335用况模板33
34用况图33
35检查与调整35
36用况模型和面向对象
分析模型36
37例题36
习题38第4章建立基本模型——类图40
41对象与类40
411概念与表示法40
412识别对象与类41
413审查与筛选42
414抽象出类并进行调整44
415认识对象的主动行为
并识别主动对象45
416类的命名46
417建立类图的对象层46
42属性与操作46
421属性46
422操作49
43关系52
431继承52
432关联60
433聚合69
434依赖73
44接口73
习题75第5章建立辅助模型77
51顺序图77
511概念与表示法77
512顺序图中的结构化
控制82
513建立顺序图84
52通信图85
521概念与表示法85
522建立通信图86
53活动图86
531概念与表示法87
532建立活动图90
54状态机图90
541概念与表示法91
542建立状态机图98
55包图99
551概念与表示法99
552如何划分与组织包101
习题102
第三部分面向对象设计
第6章什么是面向对象设计104
61面向对象设计的发展104
62OOA与OOD的关系105
63面向对象设计模型和过程107
习题108第7章问题域部分的设计109
71为复用类而增加结构109
72提高性能110
73增加一般类以建立共同协议112
74按编程语言调整继承112
75转化复杂关联并决定关联的
实现方式116
76调整与完善属性117
77构造及优化算法118
78决定对象间的可访问性119
79定义对象实例120
710其他120
习题120第8章人机交互部分的设计121
81什么是人机交互部分121
82如何分析人机交互部分122
83如何设计人机交互部分123
831设计输入与输出124
832命令的组织125
833用OO概念表达所有的
界面成分127
84人机交互部分的设计准则130
习题131第9章控制驱动部分的设计132
91什么是控制驱动部分132
92控制流132
93如何设计控制驱动部分133
931识别控制流133
932审查135
933定义控制流135
934进程间和线程间的
通信135
935控制流间的同步137
习题139第10章数据管理部分的设计140
101什么是数据管理部分140
102数据库和数据库管理系统140
1021关系数据库141
1022面向对象数据库141
103如何设计数据管理部分142
1031针对关系数据库的
数据存取设计142
1032针对面向对象数据库的
数据存取设计148
1033针对文件的数据
存取设计148
习题149第11章构件及部署部分的设计150
111构件设计150
1111概念与表示法150
1112构件的内部结构154
1113对构件的行为建模156
1114对构件的实现建模157
112部署设计158
1121概念与表示法159
1122对系统的部署建模160
习题161第12章若干典型的设计模式162
121概述162
122Facade模式163
123Adapter模式165
124Strategy模式167
125Observer模式168
126Abstract Factory模式170
127Factory Method模式172
习题174第13章OOD的评价准则175
131耦合175
132内聚175
133复用176
134其他评判准则176
习题178
第四部分系统与模型
第14章系统与模型180
141系统与子系统180
1411概念与表示法180
1412划分子系统180
142模型182
1421模型的含义182
1422模型和视图183
1423模型的抽象层次184
1424模型间的一致性检查…184
习题185
第五部分建模实例
第15章案例:教学管理系统188151系统的功能需求188
152建立需求模型191
1521划分子系统191
1522识别参与者192
1523识别用况192
1524对需求进行捕获与
描述193
153系统分析196
1531寻找类196
1532建立状态机图196
1533建立类图197
1534建立顺序图200
154系统设计201
1541问题域部分设计202
1542界面部分设计202
1543数据管理部分设计206
习题208附录A面向对象的软件建模工具209附录B文档编制指南221
参考文献227