UML for Java Programmers中文共享版

 

                                             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)
我们将下一章节中仔细体会类图的微妙之处。对此现在来说,你仅仅需要知道如下一些
事情:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<br>UML:Java程序员指南<br><br>【原 书 名】 UML For Java Programmers <br>【原出社】 Pearson Education Prentice Hall/Pearson <br>【作 者】Robert C. Martin <br>【译 者】 黄晓春 <br>【丛 书 名】 软件工程实践丛书 <br><br><br>【内容简介】<br>面向对象大师Robert Martin新作,直言不讳地指出UML的局限性,指导程序员高效地使用UML,以避免盲目使用UML所带来的灾难性后果。<br>Amazon网站读者对本书的评价:<br>● 实际的智慧、提示、技术和技巧<br>● 杰出的UML和OO设计基础读物 极佳的学习材料!<br>● 这本UML书是你惟一所需的<br>● C++程序员也应该看看这本书<br>● 有助于Java设计团队<br>● 团队程序员(和他们的经理)必读<br>● 对UML的最佳诠释,对Java程序员而言,尤其如此<br>● 杰出的UML和OO设计基础读物<br>这是世界一流面向对象大师Robert C. Martin的最新著作。作者以独特的视角,着重为Java程序员描述了UML的利与弊,指导他们何时应该使用UML,以及如何使用UML。通过本书的阅读,Java程序员将能更加恰如其分地使用UML,进一步提高开发效率。<br>可作为软件开发人员的参考书,也可供高等院校\"UML课程\"使用。本书源代码和授课用的幻灯片可在 http://www.objectmentor.com/resources/bookstore/books/UMLFJP获得。<br><br><br>www.objectmentor.com/UMLFJP<br><br><br>http://images.china-pub.com/ebook15001-20000/19998/shupi.jpg<br><br><br><br>http://www.china-pub.com/19998<br><br>
"I found Real Time UML, Third Edition, to provide an informative and practical application of UML 2.0 to the development of real-time systems, and well worth the read by systems and software engineers. It is written in plain English and provides the right balance of depth and breadth." -Sanford Friedenthal, Deputy, Corporate Systems Engineering, Lockheed Martin CorporationChair, OMG Systems Engineering Domain Special Interest Group The increasing complexity of embedded and real-time systems requires a more premeditated and sophisticated design approach for successful implementation. The object-based Unified Modeling Language (UML) can describe the structural and behavioral aspects critical to real-time systems and has come to the fore as an outstanding medium for effective design. Like its best-selling predecessors, Real Time UML, Third Edition, provides an overview of the essentials of real-time systems and an introduction to UML that focuses on the use of the ever-evolving standard in design and development. This accessible book examines requirements analysis, the definition of object structure and behavior, architectural and mechanistic design, and more detailed designs that encompass data structure, operations, and exceptions. Numerous figures help illustrate UML design techniques, and detailed, real-world examples show the application of those techniques to embedded systems. This significantly revised edition features the new UML 2.0 standard, which dramatically improves the clarity of the UML for capturing architectures and improving its scalability. Real Time UML, Third Edition, also introduces the UML Profile for Schedulability, Performance, and Time (STP Profile). The STP Profile provides a standardized way to capture schedulability and performance constraints of systems. This allows analysis tools to read and analyze UML models. Key topic coverage includes: The Rapid Object-Oriented Process for Embedded Systems (ROPES) Concurrency and resource modeling with the Real-Time (SPT) UML Profile Tapping action semantics for greater executability Scenario modeling with timing diagrams Key strategies for object identification Defining object state behavior Representing and identifying threads Mechanistic design patterns

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值