前言  本书内容  读者对象  本书特色  感谢  目录

 
UML面向对象建模与设计(英文版·第2版) (到货)
Object-Oriented Modeling and Design with UML Second Edition

出版社:人民邮电出版社
作者:[美]Michael Blaha James Rumbaugh
定价:55.00


    本书是“面向对象建模与设计”领域的经典著作,详细论述了面向对象的概念、图形表示法和开发方法学。本书由四部分组成。第一部分以一种高层的、独立于语言的方式描述面向对象的概念,还介绍了本书中使用的 UML 表示法;第二部分从问题陈述到分析、系统设计和类设计,一步一步地描述了软件开发的面向对象方法学;第三部分用面向对象语言和关系数据库描述了面向对象设计的实现;第四部分描述了成功的面向对象开发所需要的软件工程实践。本书还配有丰富的习题,覆盖了一系列应用领域以及实现目标,而且在书的后面给出了部分习题的答案。本书可以作为高年级本科生及研究生软件工程或面向对象技术课程的教材,也可以供相关技术人员参考。

 


前言

  欢迎阅读本书第 2 版!继本书第 1 版在 1991 年写成以后,技术领域已有诸多变化。回想当年,那时,面向对象( OO )技术还相当新颖,初始的兴奋和激情过后,人们对于 OO 技术究竟是真实可用还是只是一种短暂的时尚,仍怀有疑虑。俱往矣,想一想十多年来发生的变化吧!

  •  OO 语言。 C++ 已成为主流, Java 也得到普遍应用。目前具有主导地位的编程语言都是 OO 的。

  •  OO 数据库。令人惊奇的是, OO 数据库已经过气,但现在的关系数据库已经融入一些 OO 的特性。

  •  OO 建模。对象管理组织( Object Management Group , OMG )制定的统一建模语言( Unified Modeling Language , UML )标准已经合并和统一了各种相互竞争的表示法。

  •  OO 方法论。目前所有开发方法论都毫无例外地融合了 OO 的思想和概念。

OO 技术已经真正成为计算机技术主流的一部分,它不再是什么“异类”,已经成为通常的实践。

本书内容

  本书为软件开发提供了一种面向对象的方法,它的基础是,对来自真实世界的对象进行建模,随后使用这些模型围绕对象构造独立于语言的设计。面向对象建模与设计有助于更好地理解需求,进行更清晰的设计,创建更具维护性的系统。我们描述了一组面向对象的概念和一种独立于语言的图形表示法,它们可被用来分析问题需求,并设计问题的解决方案,之后 通过编程语言或数据库加以实现。我们介绍的方法能够在整个软件开发过程中运用相同的概 念和表示法。软件开发人员不需要在每个开发阶段都转换不同的表示法。

  我们阐释了如何在整个软件生命周期(从分析、设计到实现)中使用面向对象的概念。本书并非以讲述面向对象语言或编程为主。相反,我们强调编程是开发过程中的最后阶段,整个过程包括陈述问题,理解需求,规划解决方案,用特定语言实现程序。好的设计技术会将实现细节推延至设计之后的阶段完成,以保持灵活性。开发过程之前的错误会对最终的产品和产品的完成时间产生巨大的影响。我们还描述了如何用面向对象语言和关系数据库来实现面向对象设计。

  本书强调的面向对象技术并不只是一种编程方法,更重要的是,它是一种利用真实世界的概念而非计算机概念来抽象思考的方法。我们发现对于有些人来说,这种转换过程是很困难的。那些强调面向对象编程的书籍往往无法帮助程序员学会抽象思维。我们发现图形表示法有助于软件开发者直观想象问题,而不是过早地去寻求实现的方法。

  我们还阐释了对于大多数应用而言,无论其最终是用什么语言实现的,面向对象技术提供的都是一种高效实用的软件开发方法。本书采用了一种非形式化的方法;没有证明或希腊字母表示的形式化定义。借助面向对象技术所捕获的直觉,并且通过提供能够系统应用于实际问题的表示法和方法论,希望形成一种注重实效的解决问题的方法。我们将会同时提供好的和坏的设计技巧和示例,帮助软件开发者避免常见的陷阱。

本书的读者对象

  本书面向的读者是软件专业人士和学生。读者可以了解到如何将面向对象的概念应用到 软件开发生命周期的全部阶段。我们假定读者事先并不具备任何面向对象概念方面的知识。我们还假定读者熟知基本的计算概念,但不必有太多的形式化背景知识。甚至熟悉面向对象的程序员也会因懂得如何系统地设计程序而大受裨益;他们会吃惊地发现某些常见的面向对象编程实践恰恰违反了良好设计的原则。

  数据库设计人员也会对本书感兴趣。尽管面向对象程序设计语言已经受到最大的关注,面向对象数据库设计也还是很引人注目且非常实用的。我们用整整一章的篇幅讲述如何使用关系数据库来实现面向对象模型。

  本书可以作为高年级本科生及研究生软件工程或面向对象技术课程的教材。它也可以用作数据库或程序设计语言课程的补充教材。先修课程包含掌握现代程序设计语言,了解基本计算机科学术语和概念,如语法、语义、递归、集合、过程、图和状态;详细的形式化背景并不是必需的。

  我们的关注点与面向对象编程界的一些人有所不同,但与信息建模与设计方法论界一致。我们强调面向对象构造是真实事物的模型,而不单是用于编程的技术。我们把对象之间的关系提高到和类相同的语义层次,而不是将其隐藏为对象内部的指针。在继承和方法上我们关注得较少。对继承机制的精确细节不予过多强调。我们所大力强调的是类型、类、建模和高级规划。我们还演示了如何将面向对象的概念应用于状态机。

  本书由四个部分组成。第一部分是以一种高层的、独立于语言的方式描述面向对象的概念。尽管一开始会忽略高级主题,但这些概念对于本书的其余部分都是基础。第一部分还介绍了本书中所使用的 UML 表示法。第二部分从问题陈述到分析、系统设计和类设计,一步一步地描述了软件开发的面向对象方法学。在这个方法学中除了最后阶段以外所有阶段都是独立于语言的。第三部分用面向对象语言和关系数据库描述了面向对象设计的实现。尽管并不是想替代面向对象编程的书籍,但它还是描述了可应用于不同环境的一些考虑。第四部分描述了成功的面向对象开发所需要的软件工程实践。

  作者曾经接触过许多应用,有着多年面向对象分析、设计、编程和数据库建模的经验。我们热衷于面向对象的方法,发现它几乎适用于各类应用。我们也发现使用面向对象的概念以及图形表示法和开发方法学,可以大大地提高软件的质量、灵活性和可理解性。我们希望本书会有助于传达这些信息。

  本书配有丰富的习题,覆盖了一系列应用领域以及实现目标。我们建议读者随着阅读的进度,试着完成其中一些习题。 OO 技术是无法通过阅读来学习的,必须通过实践。本书的后面包含了部分习题的答案。

本书特色

  市场上有许多关于面向对象技术的图书。本书不同于这些书的地方在于,它讲授的是如何思考面向对象建模,而不仅仅是给出编程语言或建模表示法的技术细节。

  许多面向对象方面的书籍常常会从某种语言的角度切入,大多都是讲述编程问题的。在这些书当中有一些也的确讨论了设计问题,但仍然以关于编程为主。很少有书是关注于面向对象分析或设计的。我们还阐释了面向对象概念可以也应该在整个软件生命周期内使用。

  除此之外,有很多书也描述了 UML 的概念。本书的不同之处在于,它不仅解释了概念,还解释了它们的基本用途,以及该如何用它们来构建软件。我们没有解释每一个概念和个中细微差别,但我们集中精力阐述了 UML 的核心 — —这足以帮助读者学会如何使用 UML 来构建更好的软件。

自第 1 版以来的变化

  自我们完成本书的第 1 版以来,已有 14 年的时间。其间技术上有诸多改进,因此这一版也有许多变化。

  •  表示法。 我们把 OMT 表示法替换成了 UML 表示法( UML 2.0 )。 UML 现在已占统治地位,是 OO 建模的标准语言。

  •  过程。 第 2 版在软件开发过程中增加了更多的内容。现在,我们把领域分析和应用分析区分开来。我们还加入了实现建模。我们特意把过程弄得简单并且“轻量级”,这样更适合学生掌握。本书的过程是“重量级”过程(如 IBM Rational 的 RUP )的子集。

  •  三个模型。 我们延续第 1 版的重点 — —“三个模型”,因为我们相信它有助于 OO 建模教学和学习。但是,我们取消了功能模型,因为它并没有像我们期望的那样有用。取而代之,我们增加了交互模型来合并用例和顺序图并给出对对象之间的行为的更完整的认识。

  •  软件工程。 第四部分包含了几种重要的软件工程专题:迭代开发、模型的管理以及遗留系统的处理。

  •  编程语言。 在过去十年当中,编程语言发生了巨大的变化。 Smalltalk 渐渐远去, C 和 Fortran 的重要性也慢慢减弱。现在, C++ 和 Java 是占主导地位的 OO 编程语言,因此,我们也相应把重点放在它们身上。

  •  数据库。 OO 模型不仅为程序设计编码提供了一个可靠的基础,也为关系数据库提供了一个可靠的基础。本书用完整的一章描述如何从 UML 模型构建有效的、正确的和可扩展的数据库。

  •  案例研究。 在第 1 版出版的时候,我们感觉有必要验证 OO 技术的合理性,因此我们包括了几个案例研究。如今,文献当中可以找到许多案例研究,因此我们在本书中就把它们剔除。

  在这一版中,我们延续了第 1 版的风格和注重实用的思想,同样给出了许多示例和习题。

致谢

  在过去这些年当中,我们曾与许多人一起共事,他们将其所长传授给我们,给我们机会尝试自己的思想,帮助我们在这个过程中学习。我们要感谢这些人,从以前 GE 研发中心管理层直到最近我们业务上的朋友和客户。

  第 1 版还有另外三个人参加编写,他们是 Bill Premerlani 、 Fred Eddy 和 Bill Lorensen ,本版却只有我们两个人。感谢他们过去所做的贡献,那是第 2 版的基础。感谢他们在我们编写第 2 版的过程中给予的支持和鼓励。

  Chris Kelsey 在第 2 版中担任了重要的角色,应该特别提出。她是第 18 章( OO 编程语言)的主要作者,同时也是积极的审稿人。

  感谢其他审稿人( Mickael Berndtsson 、 Peter Chang 、 Bill Premerlani 以及 John Putnam )花时间阅读我们的书稿,并给予极赋见地的批评意见。

  最后,感谢我们的家人和同事,感谢在本书编写的过程中,他们对诸多干扰所显示出的耐心。

Michael Blaha

密苏里州切斯特菲尔德

blaha@computer.org

James Rumbaugh

加利福尼亚州 库珀蒂诺

 


目录

 

Contents

Chapter 1 Introduction 1

1.1 What Is Object Orientation?, 1

1.2 What Is OO Development?, 3

1.3 OO Themes, 6

1.4 Evidence for Usefulness of OO Development, 8

1.5 OO Modeling History, 9

1.6 Organization of This Book, 9

Bibliographic Notes, 10

References, 11

Exercises, 11

Part 1: Modeling Concepts 13

Chapter 2 Modeling as a Design Technique 15

2.1 Modeling, 15

2.2 Abstraction, 16

2.3 The Three Models, 16

2.4 Chapter Summary, 18

Bibliographic Notes, 19

Exercises, 19

Chapter 3 Class Modeling 21

3.1 Object and Class Concepts, 21

3.2 Link and Association Concepts, 27

3.3 Generalization and Inheritance, 37

3.4 A Sample Class Model, 41

3.5 Navigation of Class Models, 43

3.6 Practical Tips, 48

3.7 Chapter Summary, 49

Bibliographic Notes, 50

References, 51

Exercises, 52

Chapter 4 Advanced Class Modeling 60

4.1 Advanced Object and Class Concepts, 60

4.2 Association Ends, 63

4.3 N-ary Associations, 64

4.4 Aggregation, 66

4.5 Abstract Classes, 69

4.6 Multiple Inheritance, 70

4.7 Metadata, 75

4.8 Reification, 76

4.9 Constraints, 77

4.10 Derived Data, 79

4.11 Packages, 80

4.12 Practical Tips, 81

4.13 Chapter Summary, 82

Bibliographic Notes, 83

References, 83

Exercises, 83

Chapter 5 State Modeling 90

5.1 Events, 90

5.2 States, 92

5.3 Transitions and Conditions, 94

5.4 State Diagrams, 95

5.5 State Diagram Behavior, 99

5.6 Practical Tips, 103

5.7 Chapter Summary, 103

Bibliographic Notes, 105

References, 106

Exercises, 106

Chapter 6 Advanced State Modeling 110

6.1 Nested State Diagrams, 110

6.2 Nested States, 111

6.3 Signal Generalization, 114

6.4 Concurrency, 114

6.5 A Sample State Model, 118

6.6 Relation of Class and State Models. 123

6.7 Practical Tips, 124

6.8 Chapter Summary, 125

Bibliographic Notes, 126

References, 126

Exercises, 126

Chapter 7 Interaction Modeling 131

7.1 Use Case Models, 131

7.2 Sequence Models, 136

7.3 Activity Models, 140

7.4 Chapter Summary, 144

Bibliographic Notes, 144

References, 145

Exercises, 145

Chapter 8 Advanced Interaction Modeling 147

8.1 Use Case Relationships, 147

8.2 Procedural Sequence Models, 152

8.3 Special Constructs for Activity Models, 154

8.4 Chapter Summary, 157

References, 157

Exercises, 158

Chapter 9 Concepts Summary 161

9.1 Class Model, 161

9.2 State Model, 161

9.3 Interaction Model, 162

9.4 Relationship Among the Models, 162

Part 2: Analysis and Design 165

Chapter 10 Process Overview 167

10.1 Development Stages, 167

10.2 Development Life Cycle, 170

10.3 Chapter Summary, 171

Bibliographic Notes, 172

Exercises, 172

Chapter 11 System Conception 173

11.1 Devising a System Concept, 173

11.2 Elaborating a Concept, 174

11.3 Preparing a Problem Statement, 176

11.4 Chapter Summary, 178

Exercises, 179

Chapter 12 Domain Analysis 181

12.1 Overview of Analysis, 181

12.2 Domain Class Model, 183

12.3 Domain State Model, 201

12.4 Domain Interaction Model, 204

12.5 Iterating the Analysis, 204

12.6 Chapter Summary, 206

Bibliographic Notes, 206

References, 207

Exercises, 207

Chapter 13 Application Analysis 216

13.1 Application Interaction Model, 216

13.2 Application Class Model, 224

13.3 Application State Model, 227

13.4 Adding Operations, 233

13.5 Chapter Summary, 234

Bibliographic Notes, 236

References, 236

Exercises, 236

Chapter 14 System Design 240

14.1 Overview of System Design, 240

14.2 Estimating Performance, 241

14.3 Making a Reuse Plan, 242

14.4 Breaking a System into Subsystems, 244

14.5 Identifying Concurrency, 246

14.6 Allocation of Subsystems, 248

14.7 Management of Data Storage, 250

14.8 Handling Global Resources, 252

14.9 Choosing a Software Control Strategy, 253

14.10 Handling Boundary Conditions, 255

14.11 Setting Trade-off Priorities, 255

14.12 Common Architectural Styles, 256

14.13 Architecture of the ATM System, 261

14.14 Chapter Summary, 262

Bibliographic Notes, 264

References, 264

Exercises, 264

Chapter 15 Class Design 270

15.1 Overview of Class Design, 270

15.2 Bridging the Gap, 271

15.3 Realizing Use Cases, 272

15.4 Designing Algorithms, 274

15.5 Recursing Downward, 279

15.6 Refactoring, 280

15.7 Design Optimization, 280

15.8 Reification of Behavior, 284

15.9 Adjustment of Inheritance, 284

15.10 Organizing a Class Design, 288

15.11 ATM Example, 290

15.12 Chapter Summary, 290

Bibliographic Notes, 292

References, 293

Exercises, 293

Chapter 16 Process Summary 298

16.1 System Conception, 299

16.2 Analysis, 299

16.3 Design, 300

Part 3: Implementation 301

Chapter 17 Implementation Modeling 303

17.1 Overview of Implementation, 303

17.2 Fine-tuning Classes, 303

17.3 Fine-tuning Generalizations, 305

17.4 Realizing Associations, 306

17.5 Testing, 310

17.6 Chapter Summary, 312

Bibliographic Notes, 312

References, 313

Exercises, 313

Chapter 18 OO Languages 314

18.1 Introduction, 314

18.2 Abbreviated ATM Model, 317

18.3 Implementing Structure, 317

18.4 Implementing Functionality, 331

18.5 Practical Tips, 341

18.6 Chapter Summary, 342

Bibliographic Notes, 343

References, 343

Exercises, 344

Chapter 19 Databases 348

19.1 Introduction, 348

19.2 Abbreviated ATM Model, 352

19.3 Implementing Structure — Basic, 352

19.4 Implementing Structure — Advanced, 360

19.5 Implementing Structure for the ATM Example, 363

19.6 Implementing Functionality, 366

19.7 Object-Oriented Databases, 370

19.8 Practical Tips, 371

19.9 Chapter Summary, 372

Bibliographic Notes, 373

References, 373

Exercises, 374

Chapter 20 Programming Style 380

20.1 Object-Oriented Style, 380

20.2 Reusability, 380

20.3 Extensibility, 384

20.4 Robustness, 385

20.5 Programming-in-the-Large, 387

20.6 Chapter Summary, 390

Bibliographic Notes, 391

References, 391

Exercises, 391

Part 4: Software Engineering 393

Chapter 21 Iterative Development 395

21.1 Overview of Iterative Development, 395

21.2 Iterative Development vs. Waterfall, 395

21.3 Iterative Development vs. Rapid Prototyping, 396

21.4 Iteration Scope, 397

21.5 Performing an Iteration, 398

21.6 Planning the Next Iteration, 399

21.7 Modeling and Iterative Development, 399

21.8 Identifying Risks, 400

21.9 Chapter Summary, 401

Bibliographic Notes, 402

References, 402

Chapter 22 Managing Models 403

22.1 Overview of Managing Models, 403

22.2 Kinds of Models, 403

22.3 Modeling Pitfalls, 404

22.4 Modeling Sessions, 406

22.5 Organizing Personnel, 409

22.6 Learning Techniques, 410

22.7 Teaching Techniques, 410

22.8 Tools, 411

22.9 Estimating Modeling Effort, 413

22.10 Chapter Summary, 414

Bibliographic Notes, 414

References, 415

Chapter 23 Legacy Systems 416

23.1 Reverse Engineering, 416

23.2 Building the Class Model, 418

23.3 Building the Interaction Model, 419

23.4 Building the State Model, 420

23.5 Reverse Engineering Tips, 420

23.6 Wrapping, 421

23.7 Maintenance, 422

23.8 Chapter Summary, 422

Bibliographic Notes, 423

References, 424

Appendix A UML Graphical Notation 425

Appendix B Glossary` 426

Answers to Selected Exercises 441

Index 469

 
 
Copyright ©1998~2004 华储网. All rights reserved。
To comment on this site,E-mail :
webmaster@huachu.com.cn