您的位置:首页 > 编程语言 > Java开发

UML for Java Programmers中文共享版

2006-10-02 12:25 399 查看
UML for Java Programmers中文共享版(待插图片)

著:Robert Cecil Martin
翻译:Wanghaibo; Melthaw Zhang; Orient Sun; LishiFeng
目 录
第一章 针对 Java 程序员的 UML 概述..........................................................10
各种类型的图 .....................................................................................................11
类图(Class Diagram)........................................................................................11
对象图(Object Diagram) ........................................................................... ......13
序列图(sequence diagram)........................................................................ ....14
协作图(collaboration diagram)............................................................... ......15
状态图(State Diagrams)........................................................................ 15
小结 .................................................................................................................. 16
参考文献 ........................................................................................................... 16
第二章 使用图(Diagrams) ..............................................................................17
为什么用模型?................................................................................................. 17
为什么给软件建模? .................................................................................. 17
我们为什么应该在编码前构造一个全面的设计? .......................................18
有效地使用 UML ...............................................................................................18
人员之间传达............................................................................................. 18
最后的文档................................................................................................. 21
保留什么,舍弃什么?............................................................................... 22
迭代精化 ...........................................................................................................22
行为(Behavior)优先.................................................................................... 22
检查结构 .................................................................................................... 24
在脑海中想像这些代码............................................................................... 26
迭代精化 .................................................................................................... 27
最低纲领 ........................................................................................................... 27
什么时候和如何画图 ......................................................................................... 28
什么时候画 UML 图,什么时候停止........................................................... 28
Case 工具.................................................................................................. 29
用文档如何?............................................................................................. 29
用 Javadocs............................................................................................... 30
小结 .................................................................................................................. 30
第 3 页 共 247 页Matrix-与 Java 共舞 (http://www.Matrix.org.cn)
第三章 类(Class)图...................................................................................................... 32
基础知识 ........................................................................................................... 32
类............................................................................................................... 32
关联 ........................................................................................................... 33
多重性........................................................................................................ 33
继承 ........................................................................................................... 33
一个类图的例子................................................................................................. 35
细节 .................................................................................................................. 36
类的构造型................................................................................................. 36
抽象类........................................................................................................ 37
属性 ........................................................................................................... 38
聚合 ........................................................................................................... 38
组合 ........................................................................................................... 39
多重性........................................................................................................ 40
关联构造型................................................................................................. 41
内部类........................................................................................................ 42
匿名内部类................................................................................................. 42
关联类........................................................................................................ 43
关联限定符................................................................................................. 44
小结 .................................................................................................................. 44
参考文献 ........................................................................................................... 44
第四章 序列(Sequence)图............................................................................................. 45
基础 .................................................................................................................. 45
对象、生命线、消息 .................................................................................. 45
创建和销毁................................................................................................. 46
简单的循环................................................................................................. 47
案例和场景................................................................................................. 48
高级概念 ........................................................................................................... 50
循环和条件................................................................................................. 50
花时间的消息............................................................................................. 52
第 4 页 共 247 页Matrix-与 Java 共舞 (http://www.Matrix.org.cn)
异步消息 .................................................................................................... 53
多线程........................................................................................................ 55
活动对象 .................................................................................................... 56
发送消息给接口 ......................................................................................... 57
小结 .................................................................................................................. 58
第五章 用例(use case)................................................................................................. 59
编写用例 ........................................................................................................... 59
什么是用例................................................................................................. 59
主要课程 .................................................................................................... 60
预备课程 .................................................................................................... 60
其他 ........................................................................................................... 61
用例图............................................................................................................... 61
系统边界图................................................................................................. 61
用例关系 .................................................................................................... 62
小结 .................................................................................................................. 62
第六章 面向对象设计(OOD)原则................................................................................. 63
设计质量 ........................................................................................................... 63
臭哄哄的设计............................................................................................. 63
依存关系管理............................................................................................. 64
单一职责原则(SRP)...................................................................................... 64
开放-封闭原则(OCP).................................................................................... 66
Liskov 替换原则(LSP) ....................................................................................... 79
依存关系倒置原则(DIP)..................................................................................... 81
接口隔离原则(ISP) ....................................................................................... 81
小结 .................................................................................................................. 83
参考文献 ........................................................................................................... 83
第七章 dX 实践 85
迭代开发 ........................................................................................................... 85
初始探索 .................................................................................................... 85
功能特征评估............................................................................................. 86
第 5 页 共 247 页Matrix-与 Java 共舞 (http://www.Matrix.org.cn)
探究 ........................................................................................................... 86
计划 .................................................................................................................. 87
发布计划 .................................................................................................... 87
迭代计划 .................................................................................................... 87
中点 ........................................................................................................... 88
速度反馈 .................................................................................................... 88
将迭代组织进管理各阶段 .................................................................................. 89
一次迭代中包括了什么? .................................................................................. 89
结对开发 .................................................................................................... 89
可验收测试................................................................................................. 90
单元测试 .................................................................................................... 90
重构 ........................................................................................................... 91
开放式办公环境 ......................................................................................... 91
持续集成 .................................................................................................... 91
小结 .................................................................................................................. 92
参考文献 ........................................................................................................... 92
第八章 包(Packages) .................................................................................................... 94
Java Packages ................................................................................................. 94
Packages................................................................................................... 94
依赖(Dependencies) ............................................................................. 95
二进制组件.jar 文件(Binary Components) ................................................... 95
包设计的原则(Principles of Package Design)............................................... 96
发布/重用等价原则(The Release/Reuse Equivalency Principle )(REP) 96
公共闭合原则(The Common Closure Principle) (CCP)......................... 97
公共重用原则(The Common Reuse Principle) (CRP)........................... 97
非循环依赖原则(The Acyclic Dependencies Principle) (ADP) .............. 97
稳定依赖原则(The Stable Dependencies Principle) (SDP)................... 97
稳定抽象原则(The Stable Abstractions Principle) (SAP) ...................... 98
小结 .................................................................................................................. 99
第九章 对象图(Object Diagrams) ........................................................................... 100
第 6 页 共 247 页Matrix-与 Java 共舞 (http://www.Matrix.org.cn)
快照 ................................................................................................................ 100
主动对象(Active Objects) ........................................................................... 101
小结 ................................................................................................................ 104
第十章 状态图(State Diagrams) .................................................................................. 105
基础知识 ......................................................................................................... 105
专用事件 .................................................................................................. 106
超状态...................................................................................................... 107
初始伪状态和结束伪状态 ......................................................................... 109
有限状态机图的使用 ....................................................................................... 109
SMC..........................................................................................................110
ICE:案例研究..........................................................................................113
小结 .................................................................................................................118
第十一章 咖啡的启发.....................................................................................................119
Mark IV 专用咖啡机..........................................................................................119
一个挑战 .................................................................................................. 122
常见的烂方案........................................................................................... 123
缺少方法 .................................................................................................. 123
虚类 ......................................................................................................... 124
假抽象...................................................................................................... 124
巨类 ......................................................................................................... 125
咖啡机的解决方案........................................................................................... 126
交叉线...................................................................................................... 126
咖啡机的用户接口.................................................................................... 127
Use Case 1:用户按下”冲煮”按钮......................................................... 127
Use Case 2: Containment Vessel 未准备就绪 ......................................... 128
Use Case 3:冲煮完成............................................................................... 129
Use Case 4:全部结束............................................................................... 130
实现抽象模型........................................................................................... 131
Use Case 1.用户按下”冲煮”按钮(Mark IV) .......................................... 131
实现 isReady()函数.................................................................................. 133
第 7 页 共 247 页Matrix-与 Java 共舞 (http://www.Matrix.org.cn)
实现 start()函数........................................................................................ 134
M4UserInterface.checkButton 怎么样被调用的?.................................... 135
完成咖啡机............................................................................................... 136
这种设计的优势 ....................................................................................... 137
我是怎么样设计出来的? ......................................................................... 138
第十二章 SMC 远程服务:案例学习............................................................................. 151
“货物出门,概不退换” ................................................................................ 151
单元测试 ......................................................................................................... 151
SMCRemote 系统........................................................................................... 152
SMCRemoteClient .......................................................................................... 152
SMCRemoteClient 命令行(SMCRemoteClient Command Line) ............. 152
SMCRemote 通讯协议............................................................................. 153
SMCRemoteClient................................................................................... 154
日志(Loggers) .......................................................................................... 161
The Remote Sessions. ............................................................................ 162
RemoteSessionBase ............................................................................... 163
远程注册 .................................................................................................. 167
远程编译器............................................................................................... 170
文件运载器 FileCarrier ............................................................................. 176
SMCRemoteClient 小结.......................................................................... 178
SMCRemoteServer......................................................................................... 178
SocketService.......................................................................................... 178
SMCRemoteService ................................................................................ 183
SMCRemoteServer.................................................................................. 189
ServerSession ......................................................................................... 192
Three Level FSM ..................................................................................... 194
用户资料库(UserRepository).................................................................... 203
邮件发送器(OReillyEmailSender) ............................................................ 206
代码生成器(PasswordGenerator) ............................................................ 207
小结 ................................................................................................................ 208
第 8 页 共 247 页Matrix-与 Java 共舞 (http://www.Matrix.org.cn)
SMCRemoteClient 单元测试........................................................................... 208
SocketService 单元测试.................................................................................. 217
SMCRemoteServer 单元测试 ......................................................................... 220
其他单元测试 .................................................................................................. 233
ServerController (SMC 生成) .......................................................................... 237
参考文献 ......................................................................................................... 246
第 9 页 共 247 页UML for Java Programmers 中文共享版 Matrix(http://www.matrix.org.cn)
第一章 针对 Java 程序员的 UML 概述
UML(统一建模语言)是一个绘制软件概念图的图形化记法(notation)。人们可以用它
绘制图形,用这些图形来表示一个计划进行的软件设计的问题域,或者用这些图来表示一个
已经完成的软件实现。Fowler(译者注:著名 IT 技术作家)描述它们时分成了三种不同的层次:
概念层(Conceptual)、规格说明层(Specification)和实现层(Implementation),我
们将细述后面两种。
规格说明层和实现层的图形与源代码有明显的关系,实际上,规格说明层的图是准备用
来转换成成源代码的,类似地,实现层的图是打算用来描述已经存在的源代码的。在这些层
次的图形,有许多规则和语义学要遵从,这些图较少有歧义,基本上都有严格的格式。
在另外一方面,概念层上的图形与源代码没有什么严格的关系,它们与人类自然语言相
关。它们是用来描述有关已经存在的人类的问题领域的概念和抽象的速记。它们无须遵从严
格的语义规则,因此它们的意思理解会有歧义、主题可被解释。
考虑一下,以这个句子为例:一条狗(Dog)是一只动物(Animal)。我们能够创建表示这
句话的一个概念层次的 UML 图,见 Figure 1-1。
这个图描绘了通过泛化(generalization)关系连接起来的称为 Animal (动物)和 Dog(狗)
的两个实体。一个 Animal 是一条 Dog 的泛化,一条 Dog 是一种特定的 Animal。这是所有
这张图的意义了,没有什么其他意思可以从中推断出来了。我们可以声称,我们的这条叫
Sparky 的宠物狗是一只动物,我们或者可以谈到属于动物界的生物学的分类上去。因此,
这张图是主题可解释的。
不过,这张图在规格说明层次和实现层次上有更明确的意思:
第 10 页 共 247 页UML for Java Programmers 中文共享版 Matrix(http://www.matrix.org.cn)
这些代码定义了通过继承关系连接的 Animal 类和 Dog 类。但是这个概念模型没有涉及
任何
问题的解决方法的规格说明层次上的图,它不
会去
要有可能,都会伴有对应
的源代码。我们已经看完了我们最后的一个概念层次上的图了。
各种类型的图
UML 图。其余那些将在接下来的章节中要叙述的是那些
你熟
的物理实体有源文
件、
现了一个基于简单的二元树算法的图。
在你思考接下的图之前先自己熟悉一下这些代码。
类图(Class Diagram)
实现了 Comparable 接口的
实例的引用,这个 itsValue 变量简单地持有有些对象的引用。
有关计算机、数据处理和程序,这个规格说明模型描述了程序的一部分。
不幸的是,这些图本身并不能说明它们描绘在哪个层次上了。无法识别出图的层次是造
成程序员和系统分析员无法进行有意义的表达的根源。一个概念层次上的图没有定义源代
码,也不应该去定义源代码。一个描述了某个
寻找任何像概念层那样的问题的描述。
在本书中其余的所有图将是有关规格说明层或实现层的,并只
以下是在 UML 中的主要使用的图的一个非常快速的教程,一旦你读完了它,你将能够
阅读和编写那些你常用的大多数的
练掌握 UML 的细节和体系。
UML 有三类主要的图,静态图(static diagrams)描述了那些不发生变化的软件元素的
逻辑结构,描绘了类、对象、数据结构及其存在于它们之间的关系。动态图(Dynamic
diagrams)展示了在运行期间的软件实体的变化,描绘了执行流程、实体改变状态的方式。
物理图(Physical diagrams)显示了软件实体的不变化的物理结构,描绘
库文件、字节文件、数据文件等等,以及存在于它们之间的关系。
考虑一下在 Listing 1-1 所示的代码,这个程序实
在 Figure 1-2 中的类图(Class Diagram)显示了在 Listing 1-1 所指的程序中的主要类及
其它们之间的关系。它说明了一个 TreeMap 类有一个叫 add 和 get 的公共方法,说明了
TreeMap 持有一个到 TreeMapNode 类的实例 topName 的变量的引用(reference)。它也
说明了每个 TreeMapNode 类持有一个到在某种容器中的其他的两个 TreeMapNode 类的实
例--命名为 nodes 的引用,并且它说明了每个 TreeMapNode 实例持有到命名为 itsKey 和
itsKey 的其他两个实例变量的引用,这个 itsKey 变量持有一个
第 11 页 共 247 页UML for Java Programmers 中文共享版 Matrix(http://www.matrix.org.cn)
我们将下一章节中仔细体会类图的微妙之处。对此现在来说,你仅仅需要知道如下一些
事情:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: