+ -
当前位置:首页 → 问答吧 → [原创][土拨鼠]面向对象编程之设计模式--2. UML的基本知识

[原创][土拨鼠]面向对象编程之设计模式--2. UML的基本知识

时间:2009-08-28

来源:互联网

这里得到管理员的允许,我就把之前自己写的东西发上来吧,后续有时间再继续把自己对设计模式理解的一些内容放出来(有时间就多写),大家可以一起学习,讨论,共同提高。:)

上一节我们学习了面向对象开发的基本知识,但是在接受设计模式之前,我们还应该学习用于分析设计的一套工具,那就是统一建模语言(UML)。当然,我们在这里也只是进行UML的基本知识,要想了解更多关于UML的内容和技术,还需要大家更多的去了解更多的资料。
大家都知道软件设计的管理思想和理论是来源与建筑的这一套理论,之所以把软件的过程称之为“软件工程”,也是起因于“工程”这一说法。那么建筑工程的设计依据是设计图纸,那么软件工程的依据是什么呢?在行业中推崇的是统一建模这一做法,在软件工程中,用户、分析设计师、系统架构师、开发人员是通过什么样的沟通大家形成一致的理解去完成整个系统工程,依据的就是同一个UML的系统建模。
在UML建模过程中,强调的是3个概念:抽象、封装、层次。
首先是抽象,其实他就是一个识别类、识别共同特性、共同行为的一个过程。它强调的是事物的重要共性,而忽略不重要的差异。而且,这里面需要先定好位,不同场景、不同对象下所抽象的内容也有可能不同。
举个例子:一道菜。
对厨师而言,关心的是菜的原料、菜谱、工序等内容;
对服务员而言,关心的是菜的售价、销售量(有可能有提成)、买的对象(顾客)(服务);
对老板而言,关心的是菜的成本、价格、销售量,做得更好的还有可能关心同一道菜回头客;
对顾客而言,关心的是菜的色、香、味,当然还有价格;
由于所关心的不同,所以抽象的内容也有可能不同。
封装,我们在上一节已经说了,在这里就不多说了,原理一样,就是要把同样的特性和行为封装起来,以减少对象之间的耦合度。
层次,是分析设计里一个伟大的人类进步的体现,它是依据抽象的过程把系统清晰的、便于理解的划分出层与结构出来,万丈高楼平地起,越复杂的系统,越需要我们的结构清晰化,由粗到细,由浅到深的过程以巩固和加强我们系统的完善性。UML在描述模型上有3种基本词汇,那就是要素、关系和图,理解这3点很重要,基本上任何一个完整的UML模型都会是这3种的组成


[url=]1.1 要素[/url]UML有4种要素。
1、结构的要素,包括:用例、类、接口、协作(时序);
2、行为的要素,包括:交互(顺序)、状态机;
3、组织的要素,包;
4、辅助说明的要素,注释;
例子:

用例:

http://img.bimg.126.net/photo/2aWGMf1pIMAKDBTayInCoA==/5090474953813174553.jpg

类:



http://img.bimg.126.net/photo/5WAsEi5dLNNak0A4TU9C1g==/635007547460786675.jpg
接口:



http://img.bimg.126.net/photo/05gN9foAHZbM8FZIdRHahw==/1708271633658522016.jpg
协作(时序):



http://img.bimg.126.net/photo/3t41tlAKpPogpt9DUrideg==/1708271633658522018.jpg
交互(顺序):
=700) window.open('http://img.bimg.126.net/photo/diYIQZX2kY1cy1_1CEClgw==/1708271633658522023.jpg');" onload="if(this.offsetWidth>'700')this.width='700';if(this.offsetHeight>'700')this.height='700';" >


http://img.bimg.126.net/photo/diYIQZX2kY1cy1_1CEClgw==/1708271633658522023.jpg
状态机:



http://img.bimg.126.net/photo/nwtSqGNgg7pyrBmMA8_pyA==/1708271633658522025.jpg
包:



http://img.bimg.126.net/photo/vU7I8DNVJjsYd50fC9QWnA==/1708271633658522028.jpg
注释:

http://img.bimg.126.net/photo/z1xaQG6CwfjoCOD9W1BWqA==/1708271633658522031.jpg
[url=]1.2 关系[/url]关系同样有4种关系。
1、
关联关系:表示两个类的实例之间存在连接。聚合关系和组合关系是关联关系的强化形式;
如:集合:活人和跳动的心脏的关系。组合:连队与士兵的关系。
2、
依赖关系:依赖者“使用”被依赖者的关系;
3、
泛化关系:表达“特殊的”是“一般的”一种;
4、
实现关系:实现者是对要求的解决方案;

例子:

关联关系:



http://img.bimg.126.net/photo/sVmbcvCIb9-4zz7-vpC-kw==/1708271633658522034.jpg
聚合关系:



http://img.bimg.126.net/photo/3CQtvnPcs7QFh3dgAVXxUA==/5090474953813174556.jpg
组合关系:



http://img.bimg.126.net/photo/JevmPInSobjNf1puAdcgDg==/5090474953813174559.jpg
依赖关系:
=700) window.open('http://img.bimg.126.net/photo/abXhcJTtzFo5YxPjfPHcKg==/635007547460786641.jpg');" onload="if(this.offsetWidth>'700')this.width='700';if(this.offsetHeight>'700')this.height='700';" >



离开了医生,患者的对象就不是患者

离开了病人,医生的对象就不是医生
泛化关系:



http://img.bimg.126.net/photo/kdUIZRNIdpl7RD2JtR-bTQ==/635007547460786645.jpg
实现关系:

http://img.bimg.126.net/photo/apsM2_EG6e7_KRmUf4D6Nw==/635007547460786648.jpg
[url=]1.3 图[/url]UML中有9中图,这9种图的应用通常试系统的规模、项目的情况等现实意义而定,并非所有的图都会应用到,只要能够满足系统的开发需要便可以,包括系统分析设计的深度,也是一样的道理,世界万物皆有关联,所以我们在分析设计时,最忌讳的一点就是转牛角尖,实际上,一个系统的分析设计也是,只要满足系统的要求,满足项目组的理解和日后维护的需要,多一份设计,就是多一份设计以及日后维护的成本。
UML的9种图包括:
用例图:它是一种静态图,主要用于展示用例与角色以及其关系。用例同样是用于识别系统功能的一种手段;
类图:也是一种静态图,用于展示类、接口、包及其关系;
序列图(时序图):它是一种动态图,用于按时序展示对象间的消息转递;
协作图:它也是一种动态图,其核心内容和序列图相对应,强调对象间的结构组织。序列图和协作图统称交互图;
状态图:它是一种动态图,用于展示对象在其生命周期中可能经历的状态以及这些状态上对事件的响应能力;
活动图:它是一种动态图,我们也可以把它理解成流程图,表示的是系统从一个活动到另一个活动的可能路径与判断条件;
其他还有3种静态图,分别是对象图、构件图和部署图。

例子:

用例图:



http://img.bimg.126.net/photo/ojRVQ6VbsaXor7UIhRK0Zg==/635007547460786651.jpg
类图:



http://img.bimg.126.net/photo/zVaVzVVyoy0oXc0qb192og==/635007547460786657.jpg
交互图:



http://img.bimg.126.net/photo/9HwTKxOPENk-lK_IQE_ozw==/635007547460786663.jpg
状态图:



http://img.bimg.126.net/photo/FWSGHQ-MvQDYh3YIm-vGCg==/635007547460786669.jpg
活动图:



http://img.bimg.126.net/photo/2LUXHwbNr029hsOq3doCYw==/635007547460786673.jpg
对象图:



http://img.bimg.126.net/photo/XM-UBbRs9killpjFe1sJgw==/635007547460786678.jpg
构件图



http://img.bimg.126.net/photo/507MJnE1D2etiIZ9RJNdRw==/635007547460786682.jpg
部署图



http://img.bimg.126.net/photo/sj6tlUTGfSPV9I2HlA8zag==/635007547460786685.jpg

作者: simonlzs   发布时间: 2009-08-28

楼主图片都盗链哦

作者: 阿伍   发布时间: 2009-08-28

垃圾的网易

作者: 狐狸   发布时间: 2009-08-28

大家到我的blog去看吧,从那拷过来后图片看不到
http://simon700.blog.163.com/blog/static/30228542200952315855326/

作者: simonlzs   发布时间: 2009-09-03

相关阅读 更多

热门下载

更多