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.类图的三个层次

  1. 概念层类图
  2. 说明层类图
  3. 实现层类图

2.类图的组成

2.1 类

UML笔记2:类图

  • 第一层:类的名称;如果该类是抽象类,则使用斜体;
  • 第二层:类的属性,即成员变量,[可见性]名称:类型[=默认值];
  • 第三层:类的方法,即成员函数,[可见性]名称([参数列表])[:返回类型]。

成员变量和成员方法前面有权限修饰符:

  • “-”:private——私有
  • “+”:public——公有
  • “#”:protected——保护性
  • 省略:package(包)级别的可见性
    UML笔记2:类图

2.2 接口

描述:是一种特殊的类,具有类的结构但不可被实例化,只可以被实现(继承)
表示:在UML中,接口使用一个带有名称的小圆圈来进行表示UML笔记2:类图

2.3 关系

2.3.1 泛化(Generalization)

含义:类的继承关系。
表示:用空心三角和实线,空心三角指向父类。
举例:狗和猫都是一种动物。
UML笔记2:类图

2.3.2 实现(Realization)

含义:类与接口的关系,表示类是接口所有特征和行为的实现。
表示:用空心三角和虚线,空心三角指向接口。
举例:狗和猫实现了动物的“eat()”和"run()"的接口。
UML笔记2:类图

2.3.3 关联(Association)

含义:关联是一种拥有关系(has),一个类可以调用另一个类的公有的属性和方法
体现:成员变量

关联的分类

  • 单向关联
    含义:
    表示:带箭头的直线表示。
    举例:老师(Teacher类)有(has)自己的地址(Address类)
    UML笔记2:类图
  • 双向关联
    含义:指双方都知道对方的存在,都可以调用对方的公共属性和方法。
    表示:用一条直线连接两个类,也可以用双向箭头。
    举例:老师(Teacher类)有自己的学生(Student类),学生也有自己的老师。

UML笔记2:类图

  • 自关联
    含义:自己引用自己
    表示:带箭头的直线,指向自己。
    举例:二叉树结构体(刷题时经常碰见吧)
    UML笔记2:类图

对关联对象的数量描述

UML笔记2:类图

2.3.4 聚合(Aggregation)

含义:整体与部分的关系,部分离开整体后可以单独存在。关联的特例
体现:常用于类的成员变量
表示:带空心菱形和箭头的直线(或没有箭头),菱形挨着整体,箭头指向部分
举例:汽车和轮胎,轮胎是汽车的一部分,但轮胎也可以单独存在。
UML笔记2:类图

2.3.5.组合(Composition)

含义:整体与部分的关系,部分离开整体后不可以单独存在,代表整体的对象负责代表部分的对象的生命周期。聚合的特例
体现:常用于类的成员变量
表示:带实心菱形和箭头的直线(或没有箭头),菱形挨着整体,箭头指向部分
举例:公司和部门,部门是公司的一部分,但部门不可以单独存在
UML笔记2:类图

2.3.6.依赖(Dependency)

含义:是一种使用的关系,即一个类的实现需要另一个类的协助
体现:常用于类方法的局部变量、方法参数等
表示:带箭头的虚线,箭头指向协助的类(下面例子中箭头指向Food类)
举例:Animal的eat()方法的参数是Food
UML笔记2:类图