读书人

面向对象分析与设计(第3版) [平装]

发布时间: 2014-01-01 04:39:49 作者: rapoo

面向对象分析与设计(第3版) [平装]

编辑推荐

书中的表示法采用最新的UML2.0,因此《面向对象分析与设计(第3版)》是学习UML2.0不可多得的参考书。《面向对象分析与设计(第3版)》非常适合实际系统和软件的开发者、系统分析师或架构师、项目经理阅读,也可以作为高等院校软件工程和高级编程课程的教材使用。
原著中所附“分类书目”可从http://www.broadview.com.cn/17389下载。

作者简介

作者:(美国)Grady Booch Robert A.Maksimchuk Michael W.Engle Bobbi J.Young 译者:王海鹏 潘加宇

Grady Booch是IBM院士,也是六本面向对象编程畅销书的作者。他是世界知名的00技术发起人和UML创始人之一。
Bobert A.Maksimchuk是Unisys ChiefTechnology Office的一名研究主管,关注新出现的建摸技术。他是UWL for DatabaseDesign和UML for Mere Mortals的合著者。
Michael W.Engle是洛克希德马丁公司的首席工程师。他有丰富的技术和管理经验,从项目启动到运营支持,涵盖了完整的系统开发生命周期。作为系统架构师,Mike在复杂系统开发中采用了面向对象技术。
Bobbi J.Young,Ph.D.,是Unisys ChiefTechno[ogy Office的一名研究主管。她有着多年的IT行业从业经验,与商业公司和国防部合同供应商一同工作。

目录

第1篇概念
第1章复杂性2
1.1复杂系统的结构3
1.1.1个人计算机的结构3
1.1.2植物和动物的结构4
1.1.3物质的结构5
1.1.4社会机构的结构5
1.2软件固有的复杂性6
1.2.1定义软件复杂性6
1.2.2为什么软件在本质上是复杂的7
1.3复杂系统的5个属性11
1.3.1层次结构11
1.3.2相对本原12
1.3.3分离关注12
1.3.4共同模式12
1.3.5稳定的中间形式13
1.4有组织和无组织的复杂性13
1.4.1复杂系统的规范形式13
1.4.2人在处理复杂性时的能力局限16
1.5从混沌到有序17
1.5.1分解的作用17
1.5.2抽象的作用21
1.5.3层次结构的作用22
1.6复杂系统的设计23
1.6.1作为科学和艺术的工程23
1.6.2设计的含义23
1.7小结26
第2章对象模型27
2.1对象模型的演进27
2.1.1程序设计语言的换代28
2.1.2第一代和第二代早期程序设计语言的拓扑结构30
2.1.3第二代后期和第三代早期程序设计语言的结构31
2.1.4第三代后期程序设计语言的结构32
2.1.5基于对象和面向对象的程序设计语言的结构33
2.2对象模型基础35
2.2.1面向对象编程38
2.2.2面向对象设计39
2.2.3面向对象分析40
2.3对象模型要素40
2.3.1抽象的意义42
2.3.2封装的意义48
2.3.3模块化的意义51
2.3.4层次结构的意义55
2.3.5类型的意义61
2.3.6并发的意义64
2.3.7持久的意义66
2.4应用对象模型68
2.4.1对象模型的好处69
2.4.2开放式问题70
2.5小结70
第3章类与对象71
3.1对象的本质71
3.1.1什么是对象,什么不是对象72
3.1.2状态74
3.1.3行为77
3.1.4标识符81
3.2对象之间的关系83
3.2.1链接84
3.2.2聚合87
3.3类的本质88
3.3.1什么是类,什么不是类88
3.3.2接口和实现90
3.3.3类的生命周期91
3.4类之间的关系92
3.4.1关联92
3.4.2继承94
3.4.3聚合105
3.4.4依赖关系106
3.5类与对象的互动106
3.5.1类与对象的关系107
3.5.2类与对象在分析和设计中的角色107
3.6创建高品质的类与对象107
3.6.1评判一种抽象的品质108
3.6.2选择操作109
3.6.3选择关系111
3.6.4选择实现113
3.7小结114

第4章分类115
4.1正确分类的重要性115
4.1.1分类的困难116
4.1.2分类的增量和迭代本质118
4.2确定类和对象120
4.2.1经典方法和现代方法120
4.2.2面向对象分析124
4.3关键抽象与机制132
4.3.1确定关键抽象132
4.3.2识别机制134
4.4小结137
第2篇方法
第5章表示法140
5.1统一建模语言140
5.1.1简单历史回顾141
5.1.2模型与多重视图141
5.1.3图分类142
5.1.4在实践中使用图144
5.1.5概念模型、逻辑模型和物理模型145
5.1.6工具的角色145
5.1.7面向对象开发的产品146
5.1.8规模上的伸缩147
5.1.9UML的语法和语义147
5.1.10UML2.0信息资源148
5.2包图148
5.2.1基本概念:包表示法149
5.2.2基本概念:元素的可见性150
5.2.3基本概念:依赖关系151
5.2.4基本概念:包图152
5.2.5高级概念:导入和访问154
5.3组件图156
5.3.1基本概念:组件表示法157
5.3.2基本概念:组件图158
5.3.3基本概念:组件接口160
5.3.4基本概念:组件实现161
5.3.5高级概念:组件的内部结构163
5.4部署图164
5.4.1基本概念:工件表示法165
5.4.2基本概念:节点表示法165
5.4.3基本概念:部署图166
5.5用例图168
5.5.1基本概念:执行者169
5.5.2基本概念:用例169
5.5.3基本概念:用例图169
5.5.4高级概念:«include»和«extend»关系172
5.5.5高级概念:泛化176
5.6活动图177
5.6.1基本概念:动作178
5.6.2基本概念:开始和停止178
5.6.3基本概念:判断节点和合并节点179
5.6.4基本概念:分区179
5.6.5高级概念:分叉、结合和并发180
5.6.6高级概念:对象流182
5.6.7高级概念:其他元素182
5.7类图182
5.7.1基本概念:类表示法184
5.7.2基本概念:类关系186
5.7.3高级概念:模板(参数化)类189
5.7.4高级概念:可见性190
5.7.5高级概念:关联端名称和限定符191
5.7.6高级概念:约束192
5.7.7高级概念:关联类和注解196
5.8序列图197
5.8.1基本概念:对象与交互197
5.8.2基本概念:生命线与消息198
5.8.3高级概念:销毁事件199
5.8.4高级概念:执行说明200
5.8.5高级概念:交互使用201
5.8.6高级概念:控制结构201
5.9交互概述图204
5.9.1基本概念:框204
5.9.2基本概念:控制流元素204
5.9.3基本概念:交互图元素206
5.10组合结构图206
5.10.1基本概念:组合结构的部分206
5.10.2基本概念:组合结构的部分与接口207
5.10.3基本概念:组合结构连接器208
5.10.4高级概念:协作208
5.11状态机图209
5.11.1基本概念:初始状态、最终状态和简单状态210
5.11.2基本概念:转换与事件211
5.11.3高级概念:状态活动——入口活动、
执行活动和出口活动213
5.11.4高级概念:控制转换213
5.11.5高级概念:复合状态与嵌套状态215
5.11.6高级概念:并发与控制216
5.11.7高级概念:子状态机状态221
5.11.8高级概念:其他状态机图元素222
5.12时间图222
5.12.1基本概念:更多相同之处223
5.12.2基本概念:布局223
5.12.3基本概念:事件224
5.12.4基本概念:约束224
5.12.5高级概念:另一种表示形式225
5.12.6高级概念:事件与消息226
5.13对象图226
5.13.1基本概念:对象227
5.13.2基本概念:对象关系228
5.13.3高级概念:端点名称和限定符229
5.14通信图230
5.14.1基本概念:对象、链接和消息230
5.14.2基本概念:顺序表达式230
5.14.3高级概念:消息与同步233
5.14.4高级概念:迭代子句和警戒条件233
5.15小结234
第6章过程236
6.1首要原则236
6.1.1成功项目的特征236
6.1.2追求理性的开发过程240
6.2宏观过程:软件开发生命周期244
6.2.1概述244
6.2.2宏观过程的内容维:科目246
6.2.3宏观过程的时间维:里程碑和阶段249
6.2.4宏观过程的时间维:迭代255
6.2.5发行计划257
6.3微观过程:分析与设计过程260
6.3.1概述260
6.3.2抽象层次261
6.3.3活动262
6.3.4产品263
6.3.5微观过程与抽象层次267
6.3.6识别元素270
6.3.7确定元素间的协作274
6.3.8确定元素间的关系278
6.3.9详细确定元素的语义281
6.4小结285
第7章实战287
7.1管理和计划288
7.1.1风险管理288
7.1.2任务计划289
7.1.3开发复查290
7.2人员配备292
7.2.1资源配置292
7.2.2开发团队角色293
7.3发布版本管理296
7.3.1配置管理和版本控制296
7.3.2集成297
7.3.3测试298
7.4复用298
7.4.1复用的元素298
7.4.2建立复用制度299
7.5质量保证和测量指标299
7.5.1软件质量300
7.5.2面向对象测量指标301
7.6文档化304
7.6.1开发遗产304
7.6.2文档化的内容305
7.7工具306
7.7.1工具种类306
7.7.2组织上的意义307
7.8特殊主题308
7.8.1领域特定问题308
7.8.2采纳面向对象技术309
7.9面向对象开发的好处和风险310
7.9.1面向对象开发的好处310
7.9.2面向对象开发的风险311
7.10小结313
第3篇应用
第8章系统架构——基于卫星的导航316
8.1初始317
8.1.1卫星导航系统的需求318
8.1.2定义问题的边界319
8.1.3确定任务用例322
8.1.4确定系统用例325
8.2细化329
8.2.1开发一个好的架构329
8.2.2定义架构开发活动330
8.2.3验证所建议的系统架构331
8.2.4分配非功能需求和确定接口339
8.2.5规定系统架构及其部署341
8.2.6分解系统架构344
8.3构造350
8.4交付之后350
8.4.1添加新的功能351
8.4.2改变目标硬件352
第9章控制系统——交通管理353
9.1初始354
9.1.1列车交通管理系统的需求354
9.1.2决定系统用例357
9.2细化362
9.2.1分析系统功能362
9.2.2定义TTMS架构366
9.2.3从系统工程到硬件和软件工程368
9.2.4关键抽象和机制371
9.3构造373
9.3.1消息传送374
9.3.2列车时刻表计划377
9.3.3显示信息381
9.3.4传感器数据采集382
9.3.5发布版本管理383
9.3.6系统架构384
9.3.7子系统规格说明385
9.4交付之后387
第10章人工智能——密码分析389
10.1初始390
10.1.1密码分析需求390
10.1.2定义问题的边界391
10.1.3黑板框架的架构394
10.1.4知识源的分析396
10.2细化397
10.2.1黑板对象397
10.2.2依赖和认定399
10.3构造401
10.3.1设计黑板对象402
10.3.2设计知识源407
10.3.3设计控制器414
10.3.4集成黑板框架416
10.3.5添加新的知识源419
10.4交付之后421
10.4.1系统增强421
10.4.2改变需求423
第11章数据采集——气象监测站424
11.1初始424
11.1.1气象监测站需求425
11.1.2定义问题的边界425
11.1.3场景437
11.2细化438
11.2.1气象监测系统用例438
11.2.2架构框架448
11.3构造450
11.3.1帧机制450
11.3.2发布计划454
11.3.3传感器机制455
11.3.4显示机制457
11.3.5用户界面机制458
11.4交付之后461
第12章Web应用——休假跟踪系统463
12.1初始464
12.1.1需求464
12.1.2用例模型466
12.2细化467
12.2.1部署视图468
12.2.2逻辑视图470
12.2.3进程视图472
12.2.4实现视图475
12.2.5用例视图475
12.3构造480
12.3.1用户体验模型480
12.3.2分析和设计模型482
12.3.3实体493
12.3.4控制器502
12.3.5Web页面和用户界面503
12.4交付和交付之后508
附录A面向对象编程语言510
附录B进一步阅读530
注解539
术语表566

序言

人类渴望得到精神上的宁静、美学上的成就、家庭的安全、正义和自由。这一切都不能通过工业化的生产效率来直接满足。但是,生产效率让人们得到充足的物质享受,而不至于与匮乏苦苦斗争。这为精神、美学和家庭事务赢得了时间,也使得社会能够将一些特殊的技能赋予司法机构以及维护权利的机构。
作为计算机专业人员,我们努力地去构建能工作而且有用的系统:作为软件工程师,我们面临着在计算资源和人力资源有限的条件下创建复杂系统的任务。面向对象技术已经发展为管理许多不同种类的系统中内在复杂性的手段。对象模型已被证明是非常有力和统一的概念。

文摘

版权页:



插图:



2.时间和空间语义
当确定存在某个操作,并定义了它的功能语言之后,必须决定它的时间语义和空间语义。这意味着我们必须决定它完成操作需要的时间以及存储空间。这样的决定通常是用最佳、平均和最差等术语来表达的,最差的情况规定了能够接受的上限。
前面也曾提到,当一个对象通过一个链接向另一个对象传递消息时,这两个对象必须以某种方式同步。在多控制线程的情况下,这意味着消息的传递比子程序调用要更复杂。在使用的大多数语言中,对象之间的同步不成问题,因为我们的程序只包含一个控制线程,这意味着所有的对象都是被依次访问的。这种情况下的消息传递很简单,因为它的语义基本上与简单的子程序调用相同。但是,在支持并发的语言中,我们必须关注更为复杂的消息传递形式,以避免两个控制线程以无限制的方式访问同一个对象,从而引发问题。前面曾提到,在多个控制线程下仍能保持语义的对象要么是守卫的,要么是同步的。
3.6.3选择关系
在类之间和对象之间选择关系与选择操作是有联系的。如果决定对象x向对象Y发送消息M,那么X必须能够直接或间接地访问Y;否则,就不能够在X的实现中命名操作M。所谓能够访问,指的是一种抽象能够看到另一种抽象,并引用它的外部视图中的资源。只有当它们的范围重叠,并且访问得到授权时(例如,类的私有部分只能被该类本身和它的友元访问),一种抽象才可以访问另一种抽象。因此,耦合是度量可访问程度的指标。
1.Demeter法则
在选择对象间的关系时,有一条有用的指导原则,称为Demeter法则。它指出,“类的方法不应该以任何方式依赖于任何类的结构,除了它自己类的当前(顶层)结构之外。而且,每个方法只能够对一个非常有限的类集的对象发出消息”[56]。应用这一法则的基本效果就是创建了一些松耦合的类,它们的实现秘密被封装了起来。这样的类是相当没有负担的,即为了理解一个类的意思,不需要理解许多其他类的细节。

喜欢面向对象分析与设计(第3版) [平装]请与您的朋友分享,由于版权原因,读书人网不提供图书下载服务

读书人网 >软件工程

热点推荐