最近做详细设计,选了Visio来画UML图,主要是因为Visio用得多,习惯了。但用来画类图时,顿时就觉得不好用,一则是因为大部分元素高度不能调整,如包、类等,如何解除锁定也是没用,导致设计类时,如果参数多,则类图很不整洁,二则是因为Visio中类图符号要比规范集少。三则是对类图符号还不是很熟,无法流畅地表达出自己的设计概念,思想,当然可能也是自己还没有想清楚,通过UML类图体现出来了,画UML类图的过程中,也会逐渐使设计思路清晰,各个类间的继承、多态、聚合关系理清,二者是一个相互作用的过程。
下面介绍来源于一篇UML类图符号文章。文章讲得言浅意明,非常适合初画UML类图的人,但是有些重复,因此摘录独立关键点,本人针对Visio实际情况做了补充。
1.继承(extends):用空心三角形+实线来表示。
2.实现接口(implements):用空心三角形+虚线来表示。(Visio中小圆形加实线)
3.关联(Association):用实线箭头来表示。(Visio中实线,二元关联和关联类)
4.聚合(Aggregation):用空心的菱形+实线箭头来表示。
5.组合(Composition):用实心的菱形+实线箭头来表示。(Visio中没有)
6.依赖(Dependency):用虚线箭头来表示。(Visio中有调用、导入、实例化等7种依赖关系)。
7.基数:连线两端的数字表明这一端的类可以有几个实例,比如:一个鸟应该有两只翅膀。如果一个类可能有无数个实例,则就用‘n’来表示。关联、聚合、组合是有基数的。
此外Visio中还包括链接、约束、跟踪、精化、用法关系,包括信号、异常等符号。
8.5种类间的关系:
● 关联:类A与类B的实例之间存在特定的对应关系
● 依赖:类A访问类B提供的服务
● 聚集:类A为整体类,类B为局部类,类A的对象由类B的对象组合而成
● 泛化:类A继承类B
● 实现:类A实现了B接口
关联可以分为三种:一对一关联、一对多关联、多对多关联,注意:关联还要以分为单向关联和双向关联。
聚合包括普通聚合和强聚合,强聚合不允许拆缷。
各种类关系示意图,举例很好: