前言
uml就是一些图,一些由框框和线条构成的图,框框称为事物,线条表示4种关系,加点这些框框和线条的说明注释。
一.uml概述
统一建模语言(UML)是面向对象软件的标准化建模语言。
UML由3个要素构成:UML的基本构造块,支配这些构造块如何放置在一起的规则,运用于整个语言的一些公共机制。
UML的词汇表包括3种构造块:事物、关系、图
事物是对模型中最具代表性的成分的抽象,关系把事物结合在一起,图聚集了相关的事物。
事物包括4种事物:结构事物,行为事物,分组事物,注释事物
结构事物是uml模型中的名词,它们通常是模型的静态部分,描述概念或物理元素,结构事物包括类,接口,协作,用例,主动类,构件和节点。
行为事物是uml模型的动态部分,它们是模型中的动词,描述了跨越时间和空间的行为。共有两类主要的行为事物:交互和状态机。
分组事物是uml模型的组织部分,它们是一些由模型分解成的‘盒子’,在所有的分组事物中,最主要的分组事物是包。
注释事物是uml模型的解释部分,这些注释事物用来描述,说明和标注模型的任何元素。注解是一种主要的注释事物。注解是一个依附于一个元素或者一组元素之上,对它进行约束或解释的简单符号。
uml中有4种关系:依赖,关联,泛化,实现
依赖是两个事物间的语义关系,其中一个事物(独立事物发)发生变化会影响另一个事物(依赖事物)的语义。
关联是一种结构关系,它描述了一组链,链是对象之间的连接。聚合是一种特殊类型的关联,它描述了整体和部分间的结构关系,组合也是一种特殊类型的关联,它同样体现了整体和部分间的关系,但比聚合更强,也称为强聚合。
泛化是一种特殊-一般关系,特殊元素的对象可以替代一般元素的对象。用这种方法,子元素共享了父元素的结构和行为。
实现是类元之间的语义关系,其中一个类元制定了由另一个类元保证执行的契约。在这两种地方要遇到实现关系:一种是接口和实现它们的类或构件之间;另一种是在用例是实现它们的协作之间。
uml视图主要包括类图,用例图,构件图,部署图,状态图,活动图,顺序图,协作图
类图展现了一组对象、接口、协作及其之间的关系,类图给出了系统的静态静态设计视图。
用例图展现了一组用例、参与者以及两者之间的关系,用例图用于对系统的静态用例视图进行建模。
构件图展现了一组构件之间的组织和依赖关系,构件图专注于系统的静态实现视图。
部署图展现了运行处理节点以及其中构件的配置,部署图给出了体系结构的静态实施视图。
状态图展现了一个状态机,它由状态,转换,事件和活动组成,状态图关注系统的动态视图。
活动图是一种特殊的状态图,它展现了在系统内从一个活动转换到另一个活动的流程。
顺序图(或称序列图)和协作图均被称为交互图,顺序图是强调消息时间序列的交互图,协作图则是强调接收和发送消息的对象的结构组织的交互图,序列图有对象生命线和控制焦点,协作图有路径和顺序号。
二.示例图
1、用例图: usecase
2、生成时序图,协作图,活动图等
3、生成的时序图:
4、反向工程以及生成代码:
5、类图:
三.四种关系
在UML类图中,常见的有以下几种关系:泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)
1.泛化(Generalization)
【泛化关系】:是一种继承关系,它指定了子类如何特化父类的所有特征和行为例如:老虎是动物的一种.
【箭头指向】:带三角箭头的实线,箭头指向父类
2.实现(Realization)
【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现
【箭头指向】:带三角箭头的虚线,箭头指向接口
3.关联(Association)
【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子
关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
【代码体现】:成员变量
【箭头及指向】:带普通箭头的实心线,指向被拥有者
上图中,老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。
上图为自身关联:
4. 聚合(Aggregation)
【聚合关系】:是整体与部分的关系.如车和轮胎是整体和部分的关系.
聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
【代码体现】:成员变量
【箭头及指向】:带空心菱形的实心线,菱形指向整体
5. 组合(Composition)
【组合关系】:是整体与部分的关系.,没有公司就不存在部门 组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期
【代码体现】:成员变量
【箭头及指向】:带实心菱形的实线,菱形指向整体
6. 依赖(Dependency)
【依赖关系】:是一种使用的关系,所以要尽量不使用双向的互相依赖。
【代码表现】:局部变量、方法的参数或者对静态方法的调用
【箭头及指向】:带箭头的虚线,指向被使用者
各种关系的强弱顺序:
泛化= 实现> 组合> 聚合> 关联> 依赖
下面这张UML图,比较形象地展示了各种类图关系:
四.常用工具
用过绘制UML图的工具有3个:visio,亿图,starUML
五.参考书籍
UML参考手册(第二版)(美) James Rumbaugh, Ivar Jacobson ,Grady Booch 著 UML China 译 机械工业出版社
UML与软件建模 徐宝文 周毓明 卢红敏 著 清华大学出版社