今天学习UML,黎活明老师讲的,UML是一种用于软件系统分析和设计的语言
工具,它用于帮助软件开发人员进行思考和记录思路的结果。黎老师讲到,设计
固然重要,也不用太在意文档的规范性,否则就会本末倒置,只要能把你的思路
整理出来,表达清楚即可。不要因为担心做不好就不做,这样永远只会裹足不前
,只要开了头,就有进步的机会,永远没有最好的东西,只有更好,更好需要基
于第一次开始。
uml本身是一套符号的规定,就像数学符号和化学符号一样,之所以出现这些
符号定义,是因为这些符号背后对应着一套思想和方法,这些符号用于帮助描述
这套思想和方法的,这些符号是由这套思想和方法催生的。要学uml,就是要借助
这些符号来掌握背后的思想和方法,这些符号虽然必须掌握,但它远不如它背后
对应的思想和方法重要。
必须熟练掌握了某种面向对象的编程语言和跟着实施了若干个软件项目,才适
合学习uml和理解uml中的一些内容,才会有好的学习效果。 UML解决编码前的设
计问题,而不解决编码过程的实施问题。
uml图
用例图
静态结构图:类图、对象图、包图、组件图、部署图
动态行为图:交互图(时序图与协作图)、状态图、活动图
比较重要和常用的图有:用例图,类图,时序图,协作图,状态图,活动图。这
些也是学习uml必须要掌握的。时序图和协作图可以相互转换。
用例建模是UML建模的一部分,用例建模的最主要功能就是用来表达系统的功能
性需求或行为。
参与者(Actor):参与者不是特指人,是指系统以外的,在使用系统或与系统
交互中所扮演的角色。因此参与者可以是人,可以是事物,也可以是其他系统等
等。还有一点要注意的是,参与者不是指人或事物本身,而是表示人或事物当时
所扮演的角色。参与者在画图中用简笔人物画来表示。
用例是是系统为参与者提供的功能。对于对用例的命名,我们可以给用例取一个
简单、描述性的名称,一般为带有动作性的词。用例在画图中用椭圆来表示,椭
圆下面附上用例的名称。
用例图不是任何时候都需要,只有对流程不太明白的时候才需要。
使用rose画的用例图可以选中以后进行复制粘贴,就把用例图copy下来了。
类图用于描述系统中的对象类本身的组成和对象类之间的各种静态关系。
类之间的关系:泛化(继承)、依赖、关联、聚合与组合
只要是在类中用到了对方,那么他们之间就存在依赖关系。泛化关系实际上就是
继承关系,他是依赖关系的特例。关联关系实际上就是类与类之间的联系,他是
依赖关系的特例。关联具有导航性:即双向关系或单向关系。关系具有多重性:
如“1”(表示有且仅有一个),“0...”(表示0个或者多个),“0,1”(表示0个或者一个),“n...m”(表示n到 m个都可以),“m...*”(表示至少m个)。聚合关系(Aggregation)表示的是整体和部分的关系,整体与部分可以分开。聚合关系是关联关系的特例,所以他具有关联的导航性与多重性。组合也是整体与部分的关系,但是整体与部分不可以分开。
在rose中画类图和关联他们之间的关系有几个画图的知识点:
单向关联变双向关联: 两个类的navigable 都选中。
关联变组合 在整体的一方选中Aggregate containment of 部分类 下选择by value
关联变聚合 在整体的一方选中Aggregate containment of 部分类 下选择by
reference。
时序图(Sequence Diagram)是强调消息时间顺序的交互图。时序图描述类系
统中类和类之间的交互,它将这些交互建模成消息交换。时序图是一个模型,用
于描述对象组如何随着时间在某些行为方面进行协作。
时序图是一种强调消息时序的交互图,他由活动者(Actor)、对象(Object)
、消息(Message)、生命线(Lifeline)和控制焦点(Focus of control)组成。在UML中,对象表示为一个矩形,其中对象名称标有下划线;消息在时序图中由有标记的箭头表示;生命线由虚线表示,控制焦点由薄薄的矩形表示(也称可为
Activation Bar “活动条”)。
协作图(Collaboration Diagram,也叫合作图)是一种交互图(interaction diagram),强调的是发送和接收消息的对象之间的组织结构。一个协作图显示了一系列的对象和在这些对象之间的联系以及对象间发送和接收的消息。
时序图主要侧重于对象间消息传递在时间上的先后关系,而协作图则侧重于对象
间及对象和角色间交互的静态关系。