没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
第1章 UML简介
在本章中,你将学习如下内容:
为什么需要UML?
UML的诞生。
如何用图表示UML模型的各个部分?
为什么使用UML提供的不同类型的图对我们来说很重要?
统一建模语言(Unified Modeling Language,UML)是当今世界上面向对象系统开发领
域中最激动人心的工具之一。为什么?UML是一种可视化的建模语言,它能让系统构造者用
标准的、易于理解的方式建立起能够表达出他们想象力的系统蓝图,并且提供一种机制,以便
于不同的人之间有效地共享和交流设计结果。
交流思想是极为重要的。在UML出现以前,系统开发往往是无计划的议题。系统分析员
尽力去获取客户的需求,用某种他自己能够理解(但客户不一定总能理解)的表示法来产生需
求分析文档,然后将这个分析转交给一个程序员或者一个程序员小组,并且期待着最后所开发
出的系统正是客户所需要的。
一些术语
在本书中,系统(system)指的是硬件和软件的结合体,它能提供业务问题的解决方
案。系统开发(system development)是为客户建立一个系统的过程,而客户(client)是
需要解决问题的人。系统分析员(analyst)将客户所要解决的问题编制成文档,并将该文
档转交给开发人员(developer),开发人员是为了解决客户的问题而构造软件并在计算机硬
件上实施该软件的程序员。
由于系统开发需要人与人之间的交流,因此在开发过程的每个阶段中都很可能潜伏着错误
系统分析员可能没有正确理解客户的需求。他编制的文档客户可能不能理解。系统分析员经常
编写出语句冗长、内容庞大的需求文档,项目组的其他成员很难用上这些文档,这真是添乱。
可笑的是,这些无足轻重的文档常常把重要的需求(以及需求之间的相关性)挤出人们的脑海
之外。因此,系统分析的结果对程序员来说可能很不明确,随后程序员据此构造出的程序很可
能不仅难以使用而且根本不是客户所需要的最初问题的解决方案。
难道你不奇怪,为什么今天很多已经运行了很长时间的那些老系统既笨重、麻烦,而且又
难以使用吗?
4 UML 基础、案例与应用
1.1 在纷繁复杂中寻求解决问题的办法
在计算机时代的早期,程序员们在编制程序之前几乎很少对手头问题进行详细的分析。如
果他们真地对问题进行了充分分析的话,问题也就不是如此了。通常他们一开始就自底向上地
编写程序,随着时间的进展代码不断扩充。这种大胆进行尝试的做法添加了一丝浪漫色彩,但
是在今天这样一个高商业风险的社会里,这样做被证明是不适当的。
如今,一个经过深思熟虑的计划至关重要。客户必须理解开发组做什么,如果开发组没有
充分理解客户需求的话(或者如果客户在半路改变了自己的想法),客户必须能够指出需求所
发生的变化。不仅如此,系统开发还是一个典型的群组工作,因此小组的每个成员必须要知道
自己的那部分作品应该放到整体作品中的哪个位置(当然还得要知道这个整体作品是什么)。
随着世界变得越来越复杂,存在于这个世界中的基于计算机的系统也增加了复杂性。这些
计算机系统通常包括多个硬件和软件单元、跨越长距离的网络设施,还要连接到信息量堆积如
山的数据库上。如果你要创建一个成功的系统,怎么来对付这些问题的复杂性呢?
最关键的一点是要用一种系统分析员、客户、程序员和其他系统开发所涉及到的人员能够
理解和达成一致的方式来组织系统的设计过程。UML就提供了这种组织方式。
不首先建立一个详细的蓝图,你不会马上开始建造一个诸如办公大楼这样的复杂建筑物。
同样,不首先编制一个详细的设计计划,那么你也不大可能马上就在这栋办公大楼中建立起一
个复杂的系统。拿给客户看的设计计划就如同建筑设计师拿给楼的买主的建筑物设计蓝图。设
计计划应该源于对客户需求的细致分析。
短的开发周期是当今系统开发的又一个显著特征。当所要求的截止日期一个又一个地接踵
而来时,可靠的系统设计是绝对必要的。
现代社会频繁发生的公司兼并使可靠的设计显得尤为必要。当一个公司收购了另一个公司
新成立的组织可能要对正在进行中的开发项目的许多重要方面(实施工具、编程语言及其他)
进行修改。具有自我调整能力的“防弹项目蓝图”能够适应项目的大规模变更。如果设计是稳定
可靠的,即使实施过程中遇到了变化,实施过程照样能够平稳地进行。
可靠的设计需要一种能被系统分析员、开发人员和客户接受为标准的设计表示法,就像电
子工程师在绘制电路图时所用的标准表示法以及在物理学中被作为标准的冯诺依曼图所用的表
示法那样。UML就是这样的表示法。
1.2 UML的诞生
UML是Grady Booch、James Rumbaugh和Ivar Jacobson智慧的结晶,他们被人们称为“三个
好朋友”。这几位先生在20世纪80年代和90年代的初期分别在不同的组织里工作,各自设计他
们自己的面向对象分析与设计方法学。他们的方法学和其他同行竞争者相比取得了卓越的成果
到20世纪90年代中期,他们开始相互借鉴,然后决定相互合作共同推进这项工作。
第2章“理解面向对象”、第3章“运用面向对象思想”和第4章“关系”讨论面向对象这个主
题。面向对象的概念对于全书的学习起着非常重要的作用。
第 1 章 UML 简介 5
1994年,Rumbaugh加入到Rational 软件公司工作,而Booch早已经在那里工作。第二年
Jacobson也加入了Rational公司。
后面的事情,正如他们所说的,是具有历史意义的。UML草案版开始在软件工业界流传
开来,并且根据大量的反馈信息做了大幅度修改。由于许多公司感到UML能够适应它们的战
略目 标 , 因 此 一 个U M L联盟 蓬 勃 发 展 起来。联盟的 成 员 包 括D E C、 H e w lett-P ac k a r d、
Intellicorp、Microsoft、Oracle、Texas Instruments、Rational和其他一些公司。1997年,应“对
象管理组”(Object Management Group,OMG)向外界征求标准建模语言的建议,联盟制订了
UML 1.0版并提交给OMG。
后来联盟继续发展,产生了UML 1.1版,提交给OMG后,于1997年被OMG采纳为标准。
1998年OMG接管了UML标准的维护工作,并且又制订了两个新的UML修订版。UML成为软
件工业界事实上的标准,并且仍在不断发展。UML 1.3版、1.4版和1.5版先后诞生,最近OMG
正式批准了2.0版。大多数的面向对象模型和UML建模的相关图书,都是基于UML的早期版本
也就是说1.X版的。在本书中,我将向你展示UML的新旧版本之间的区别。
1.3 UML的组成
UML包括了一些可以相互组合为图表的图形元素。由于UML是一种语言,所以UML具有
组合这些元素的法规。这里先不介绍这些元素和规则,而是直接介绍UML各种图的用法,因
为这些图是进行系统分析时要用到的。
这样的方法类似于学习外国语时首先是使用它而不是先学它的语法和组词造句。当你花
了一定的时间来运用外语后,就很容易理解外语的语法规则和组词规则。
UML提供这些图的目的是用多个视图来展示一个系统,这组视图被称为一个 模型
(model)。一个系统的UML模型有点像一个建筑物按照比例缩小并经艺术家粉饰后的建筑模
型。在这里要注意的重要一点是一个UML模型只描述了一个系统要做什么,它并没告诉我们
系统是如何被实施的。
下一小节将简单介绍UML中最常见的图和它们所表达的概念。在第一部分的后部,你将
能更仔细地审视每种图。记住,由这些图再混合组图也是可以的,UML提供了扩展这些图的
方法。
模型
在科学和工程技术领域中模型是一个很有用的概念。在最通常的意义下,当你建立了
一个模型后,你其实就在运用你已经了解的很多知识来帮助你理解暂时还不知道的很多东
西。在某些领域中,一个模型可能是一组数学方程式;而在另一些领域中,一个模型可能
是计算机仿真程序。模型可能有许多种类型。就我们的目的而言,一个模型是一组UML
图,为了理解和开发一个系统,我们可以检查、获取和修改这些图。
6 UML 基础、案例与应用
1.3.1 类图
考虑一下你周围的世界。你周围的事物大部分都可能具有某些属性(特性),并且它们以
某种方式体现出各自的行为。我们可以认为这种行为是一组操作。
你还会发现,事物很自然地都有其各自所属的种类(汽车、家具、洗衣机……)。我们把
这些种类称为类。一个类(class)是一类或者一组具有类似属性和共同行为的事物。举一个
例子,属于洗衣机(washing machine)类的事物都具有诸如品牌(brand name)、型号
(model name)、序列号( serial number)和容量(capacity)等属性。这类事物的行为包括
“加衣物(accept clothes)”、“加洗涤剂( accept detergent)”、“开机( turn on)”和“关机
(turn off)”等操作。
图1.1是一个用UML表示法表示的洗衣机属性和行为的一个例子。矩形方框代表类的图标
它被分成3个区域。最上面的区域中是类名,中间区域是类的属性,最下面区域里列出的是类
的操作。类图就是由这些类框和表明类之间如何关联的连线所组成。
图1.1 UML类图标
注意类名、属性名和操作名之间的间隔。在UML中,由多个单词组成的类名,每个单词
的首字母要大写,并且单词和单词之间不用空格(例如,WashingMachine)。属性名和操作名
也遵从相同的约定,但其首字母不用大写(例如,acceptClothes)。每个操作名的后面都有一
对括号,我们将在第3章中解释其原因。
在第4章中,你将会看到有许多线条连接的矩形符号组成的类图,这些线条表示类之间是
如何相关联的。
为什么要如此麻烦地考虑事物的分类和它们的属性及行为呢?为了与我们所处的这个复杂
世界进行交互,大部分现代软件都模拟现实世界的某些方面。几十年的经验告诉我们,当软件
代表了现实世界中的事物的类时,采用这种模拟方式开发软件最容易。类图就能为开发人员提
供这种模仿现实世界的表达方式。
类图对系统分析也有很大帮助。它可以让分析员使用客户所采用的术语和客户交流,这样
就可以促使客户说出所要解决的问题的重要细节。
1.3.2 对象图
对象(object)是一个类的实例,是具有具体属性值的一个具体事物。例如,你的洗衣机
的品牌可能是“Laundatorium”,型号为“Washmeister”,序列号为“GL57774”,容量为16磅。
图1.2中的图标说明了如何用UML来表示对象。注意对象的图标也是一个矩形,和类的图
剩余17页未读,继续阅读
资源评论
- Y伯爵72013-05-27基础知识不错,学习了。顶一下
- 阿寧2014-11-26总结性文档,适合了解,具体学习还需要看专门书籍;
heyeyo
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于python实现的基于PyQt5和爬虫的小说阅读系统.zip
- 机械设计整经机上纱自动化sw20非常好的设计图纸100%好用.zip
- Screenshot_20240427_031602.jpg
- 网页PDF_2024年04月26日 23-46-14_QQ浏览器网页保存_QQ浏览器转格式(6).docx
- 直接插入排序,冒泡排序,直接选择排序.zip
- 在排序2的基础上,再次对快排进行优化,其次增加快排非递归,归并排序,归并排序非递归版.zip
- 实现了7种排序算法.三种复杂度排序.三种nlogn复杂度排序(堆排序,归并排序,快速排序)一种线性复杂度的排序.zip
- 冒泡排序 直接选择排序 直接插入排序 随机快速排序 归并排序 堆排序.zip
- 课设-内部排序算法比较 包括冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序和堆排序.zip
- Python排序算法.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功