UML学习笔记(上)+https://developer.aliyun.com/article/1492237
类之间的关系
UML 将事物之间的联系归纳为 6 种,并用对应的图形类表示。下面根据类与类之间的耦合度从弱到强排列。UML 中的类图有以下几种关系:依赖关系、关联关系、聚合关系、组合关系、泛化关系和实现关系。其中泛化和实现的耦合度相等,它们是最强的。
1. 依赖关系
依赖(Dependency)关系是一种使用关系,它是对象之间耦合度最弱的一种关联方式,是临时性的关联。在代码中,某个类的方法通过局部变量、方法的参数或者对静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些职责。
在 UML 类图中,依赖关系使用带箭头的虚线来表示,箭头从使用类指向被依赖的类。如下是人与手机的关系图,人通过手机的语音传送方法打电话。
2. 关联关系
关联(Association)关系是对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系,如老师和学生、师傅和徒弟、丈夫和妻子等。关联关系是类与类之间最常用的一种关系,分为一般关联关系、聚合关系和组合关系。我们先介绍一般关联。
关联可以是双向的,也可以是单向的。在 UML 类图中,双向的关联可以用带两个箭头或者没有箭头的实线来表示,单向的关联用带一个箭头的实线来表示,箭头从使用类指向被关联的类。也可以在关联线的两端标注角色名,代表两种不同的角色。
在代码中通常将一个类的对象作为另一个类的成员变量来实现关联关系。如下是老师和学生的关系图,每个老师可以教多个学生,每个学生也可向多个老师学,他们是双向关联。
3. 聚合关系
聚合(Aggregation)关系是关联关系的一种,是强关联关系,是整体和部分之间的关系,是 has-a 的关系。
聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在。例如,学校与老师的关系,学校包含老师,但如果学校停办了,老师依然存在。
在 UML 类图中,聚合关系可以用带空心菱形的实线来表示,菱形指向整体。如下是大学和教师的关系图。
4.组合关系
组合(Composition)关系也是关联关系的一种,也表示类之间的整体与部分的关系,但它是一种更强烈的聚合关系,是 cxmtains-a 关系。
在组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在,部分对象不能脱离整体对象而存在。例如,头和嘴的关系,没有了头,嘴也就不存在了。
在 UML 类图中,组合关系用带实心菱形的实线来表示,菱形指向整体。如下是头和嘴的关系图。
组合关系的实例
5.泛化关系
泛化(Generalization)关系是对象之间耦合度最大的一种关系,表示一般与特殊的关系,是父类与子类之间的关系,是一种继承关系,是 is-a 的关系。
在 UML 类图中,泛化关系用带空心三角箭头的实线来表示,箭头从子类指向父类。在代码实现时,使用面向对象的继承机制来实现泛化关系。例如,Student 类和 Teacher 类都是 Person 类的子类,其类图如下所示。
6.实现关系
实现(Realization)关系是接口与实现类之间的关系。在这种关系中,类实现了接口,类中的操作实现了接口中所声明的所有的抽象操作。
在 UML 类图中,实现关系使用带空心三角箭头的虚线来表示,箭头从实现类指向接口。例如,汽车和船实现了交通工具,其类图如下所示。
UMLet工具简单使用
掌握用UML 建模工具来画类图,用来代码开发前的
UMLet 是一款免费且开源的 UML 建模工具,它可以将原型导出为 bmp、eps、gif、jpg、pdf、png、svg 等格式,还可以集成到 Eclipse 中,作为 Eclipse 的插件在 Windows、Mac OS 和 Linux 等平台上运行。它可在 UMLet 官网下载安装。
1、下载
官网地址: https://www.umlet.com/changes.htm
下载UMLet 14.3 stand-alone , Windows、Mac OS 和 Linux 都在一个压缩包中.
Windows系统
双击“Umlet.exe”或“Umlet.jar”打开。
Linux 或 Mac系统
打开终端窗口, 来到文件目录, 输入java -jar Umlet.jar
打开.
2、界面介绍
主要分为三个区, 工作区、模版区、文本编辑区
- 工作区: 制作、拖动、连线UML图.
- 工作区中需要的UML元素大部分从模板区中获取;
- 文本区用于编辑UML元素的内容,如类名称、属性、方法、背景色等等。
3、使用
引用UML元素
拖动模板区的SimpleClass
方框到工作区,就可以创建一个最基本的类。
除了拖动,还有其他几种方式:
- 在模版区中双击元素
- 在工作区中双击元素复制
- 从模板区中Ctrl+C复制元素,再在工作区中Ctrl+C粘贴;
- 在工作区中复制,再粘贴。
编辑元素内容
点选工作区中的类元素,修改文本区中类名为Cat
,并添加属性和方法,具体如下:
文本区的样式格式有以下几种:
**
:两个星号中的内容加粗;//
:两个斜杠中的内容斜体;__
:两个下划线中的内容加下划线;--
:两个减号线表示一个横线;bg
:背景色,可以取red
等颜色名,或者十六进制色,如:0xffffff
;fg
:前景色,取值同背景色,用于指定文字和边框的颜色。
当发现工作区中元素的框太小, 可以鼠标放在框上,通过上下左右、对比度进行调整.
连线
根据上一步的方法, 再添加一个父类Animal, 需要通过连线来表示关系.
1、双击模版区中的空心实线箭头,添加到工作区中.
2、可以拖动线的两头,开始连线, 成功完成连接后, 拖动元素, 线也会随之变化.
备注: 可以观察不同线在文本编辑区的内容, 有时为了避免替换线的类型时需要重新连接, 可以直接修改线的内容来完成替换.
视角变化
鼠标按住空白区域移动,可以移动视角。
按住键盘Ctrl
键,滚动鼠标滑轮,可以缩放视角。
导出
如下为几种导出方法:
- 导出完整图形:选择菜单File → Export as…,选择导出的格式。
- 仅导出Cat类:点选Cat类,再选择菜单File → Export as…导出。
- 导出Cat、Animal类及之间的连线:按住键盘Ctrl键,拖动鼠标左键框选,再选择菜单File → Export as…导出。
- 复制Cat、Animal类图到Word文档中, 按下Ctrl+C复制,再到Word中粘贴。
FQA
UMLet FAQ:http://umlet.com/faq.htm
参考文献
- C语言中文网: UML统一建模语言是什么?
- C语言中文网: UML类图及类图之间的关系