UML类图
类图是软件工程的统一建模语言一种静态结构图,描述了系统的类集合,类的属性和类之间的关系。在学习面向对象编程或者设计模式时,免不了是要和类图打交道。
一、工具
推荐Microsoft Visio,理由是精美,好用。当然也有其他流程图软件,全看个人喜好。 如何使用?Visio搜索UML类图模板
二、箭头符号所代表的含义
三、类的成员
- 最上面是类名称
- 中间部分包含类的属性
- 底部部分包含类的方法
+ 公共
- 私有
# 保护
~ 包
static 静态
四、类与类的关系
依赖关系
依赖关系(Dependency)可以理解为一个类A使用到了另一个类B,类B的变化会影响它的依赖者类A,用带燕尾箭头的虚线表示
泛化关系
泛化(Generalization),即继承的反方向,指的是一个类(称为父类、父接口)具有另外的一个(或一些)类(称为子类、子接口)的共有功能。子类可视为其父类的特例,并可以增加新功能。用带空心三角形箭头的实线表示。
实现关系
实现(Realization)指的是一个class类实现interface接口(可以是多个)的功能;用带空心三角形箭头的虚线表示。
聚合关系
聚合(Aggregate)是表示整体与部分的一类特殊的关联关系,是“弱”的包含(" ... owns a ..." )关系,成分类可以不依靠聚合类而单独存在,可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享(sharable)。例如,大雁与雁群。再例如教授与课程就是一种聚合关系。又例如图书馆包含(owns a) 学生和书籍。即使没有图书馆,学生亦可以存在。
组合关系
组成(Composition)关系,是一类“强”的整体与部分的包含关系(" ... is a part of ...")。成分类必须依靠合成类而存在。整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束。合成类别完全拥有成分类别,负责创建、销毁成分类别。例如汽车与化油器,又例如公司与公司部门就是一种组成关系。图形以实心的菱形箭尾与实线表示。
关联关系
最常见的时双向关联和单向关联。例如人订阅了一份报纸,就是双向关联。某个对象会长期的持有另一个对象的引用,关联的两个对象彼此间没有任何强制性的约束,只要二者同意,可以随时解除关系或是进行关联,它们在生命期问题上没有任何约定。被关联的对象还可以再被别的对象关联,所以关联是可以共享的。 在代码层面上,被关联类以类属性的形式出现在关联类中,也可能是关联类引用了一个类型为被关联类的全局变量。(箭头从使用类指向被关联的类)