前言
中间先夹一篇类图的基本点吧,与人方便自己方便。
用CSDN的markdown画了下类图,发现预览和实际不一样。
于是放弃它,准备借UML工具画几个比现在更能传神的图,用什么画图不重要,领悟到设计图意思,设计出符合自己需求的实体才是最重要的。
后边会花时间把之前的markdown类图改为第三方工具画图再以图片形式粘到对应文章内。
下边结合UML图示例,介绍几个线条表示的关系:组合、聚合、关联、依赖、实现、继承(泛化)。
1.组合
一个类持有另一个类的实例。表达有一个,不能没有
的意思。人有一个头(人不能没有头)。
- 结构:
实心菱形、实线、箭头
- 表达:
A有一个B并且不能没有B
2.聚合
一个类持有另一个类的实例。表达包含一个,可以没有
。报社有客户订阅者
,也可以暂时没有。
- 结构:
空心菱形、实线、箭头
- 表达:
A有一个B,也可以没有
3.关联
我即将选用,就多说一句两句的,由于关系强度变弱,关联也可以用来表达聚合、组合的意思。
关联,一个类持有另一个类的实例,有单向关联,双向关联互相关联
,自关联持有自己,如链表结构
。
- 结构:
实线、箭头
。
3.1单向关联
- 结构:
实线、箭头
- 表达:
A持有B
3.2双向关联
- 结构:
实线
- 表达:
A和B互相持有对方
3.3自关联
- 结构:
实线、箭头
- 表达:
A自己持有自己
4.依赖
依赖,表示比关联较弱的关系。将关联关系中的线条换成虚线
。
- 结构:
虚线、箭头
。 - 表达:
A使用了B
5.实现
表示一个类实现自某个接口。
- 结构:
虚线、空心三角
- 表达:
A实现B接口
6.继承(泛化)
表示一个类继承自某个类。
- 结构:
实线、空心三角
- 表达:
A继承B
总结
- 前4种都是表达类于类之间的持有或者说使用关系。
- 我习惯于按关联和依赖两种来表示,用依赖有点太弱太过于抽象,于是选关联来表达两个类之间的持有关系。
- 按关系的强弱来排列:组合>聚合>关联>依赖
- 继承和实现,没啥好说的。