前言
UML类图形象反映系统类之间的关系,大家非常常用。小弟不才,偶尔使用,往往每次使用都得查询各种关系的表示方式。终于,这次认真看了几遍,打算记起来。
注意
记忆方法只是本人联想,用于加强记忆。与该表示方式的来源没有半点关系。
元素
类和接口
- +表示public,-表示private。正代表公开,负代表私密,很正常。
类之间的各种关系
泛化、实现
- 泛化(可以看成继承)和实现都用
三角形
来表示。 -
实现
,由“无实现”到“有实现”。没东西是不是比较虚啊,所以用的是虚线
。 -
泛化
,原来就有实现,只不过在此基础上扩展。本身就很强,用实线
。 - 在Java中的表现,泛化,就是继承;实现,就是实现嘛,被实现的可以是接口,或抽象类。
聚合、组合
- 聚合、组合都是用
菱形
表示。他们都是多个对象聚集而成,所以体积比较大,你看菱形是不是比三角形、箭头要大一点。 - 两者都是用实线。
- 聚合,是聚集起来合成在一起的。比如人员聚集起来合成一个团队,如果团队解散了,但人员还存在。是
弱依赖
关系,所以用空心的菱形
。 - 组合,是(结构)组成合成在一起的。比如商品条目、配送地址信息、付款信息组成订单,如果订单消失了,付款信息也消失了(生存周期一致)。是强依赖关系,所以用
实心的菱形
。
关联、依赖
- 关联、依赖都是由
箭头
表示(除了箭头,也想不到其他更合适的了)。 - 关联,是静态的、非运行时的关系(什么是非运行时的关系?用Java代码来说,A关联B,那么B是A的一个
属性
,顿时领悟了吧)。那么稳定的关系,当然用实线
了。 - 依赖,是临时的、运行时的关系(用Java代码来说,就是
参数
嘛),临时的关系,用虚线
表示也合理。