UML笔记2:类图
0.参考博客列表
- https://blog.****.net/yiminghd2861/article/details/86615080
- https://blog.****.net/sinat_21107433/article/details/102576624
- https://www.cnblogs.com/silent2012/archive/2011/09/07/2169946.html
1.类图的三个层次
- 概念层类图
- 说明层类图
- 实现层类图
2.类图的组成
2.1 类
- 第一层:类的名称;如果该类是抽象类,则使用斜体;
- 第二层:类的属性,即成员变量,[可见性]名称:类型[=默认值];
- 第三层:类的方法,即成员函数,[可见性]名称([参数列表])[:返回类型]。
成员变量和成员方法前面有权限修饰符:
- “-”:private——私有
- “+”:public——公有
- “#”:protected——保护性
- 省略:package(包)级别的可见性
2.2 接口
描述:是一种特殊的类,具有类的结构但不可被实例化,只可以被实现(继承)
表示:在UML中,接口使用一个带有名称的小圆圈来进行表示
2.3 关系
2.3.1 泛化(Generalization)
含义:类的继承关系。
表示:用空心三角和实线,空心三角指向父类。
举例:狗和猫都是一种动物。
2.3.2 实现(Realization)
含义:类与接口的关系,表示类是接口所有特征和行为的实现。
表示:用空心三角和虚线,空心三角指向接口。
举例:狗和猫实现了动物的“eat()”和"run()"的接口。
2.3.3 关联(Association)
含义:关联是一种拥有关系(has),一个类可以调用另一个类的公有的属性和方法
体现:成员变量
关联的分类
- 单向关联
含义:
表示:带箭头的直线表示。
举例:老师(Teacher类)有(has)自己的地址(Address类)
- 双向关联
含义:指双方都知道对方的存在,都可以调用对方的公共属性和方法。
表示:用一条直线连接两个类,也可以用双向箭头。
举例:老师(Teacher类)有自己的学生(Student类),学生也有自己的老师。
- 自关联
含义:自己引用自己
表示:带箭头的直线,指向自己。
举例:二叉树结构体(刷题时经常碰见吧)
对关联对象的数量描述
2.3.4 聚合(Aggregation)
含义:整体与部分的关系,部分离开整体后可以单独存在。关联的特例
体现:常用于类的成员变量
表示:带空心菱形和箭头的直线(或没有箭头),菱形挨着整体,箭头指向部分
举例:汽车和轮胎,轮胎是汽车的一部分,但轮胎也可以单独存在。
2.3.5.组合(Composition)
含义:整体与部分的关系,部分离开整体后不可以单独存在,代表整体的对象负责代表部分的对象的生命周期。聚合的特例
体现:常用于类的成员变量
表示:带实心菱形和箭头的直线(或没有箭头),菱形挨着整体,箭头指向部分
举例:公司和部门,部门是公司的一部分,但部门不可以单独存在
2.3.6.依赖(Dependency)
含义:是一种使用的关系,即一个类的实现需要另一个类的协助
体现:常用于类方法的局部变量、方法参数等
表示:带箭头的虚线,箭头指向协助的类(下面例子中箭头指向Food类)
举例:Animal的eat()方法的参数是Food