UML类图
1.类图基础属性
解释:
成员变量中:
+表示public
-表示private
#表示protected
~表示default,也就是包权限
_下划线表示static
成员方法中:
斜体表示抽象 ,类中有抽象方法,那么类也是个抽象类,也要加斜体
2.类与类之间关系
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)
类与类之间的关系
2.1泛化
介绍:
泛化(Generalization)表示类与类之间的继承关系,接口与接口之间的继承关系,或类和接口的实现关系
(1)继承
介绍:
继承表示是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。
表示方法:
继承使用空心三角形+实线表示。
示例:
鸟类继承抽象类动物
(2)实现
介绍:
实现表示一个class类实现interface接口(可以是多个)的功能。
表示方法:
- 矩形表示法
使用空心三角形+虚线表示
比如:大雁需要飞行,就要实现飞()接口
- 棒棒糖表示法
使用实线表示
2.2依赖
介绍:
对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。
表示方法:
依赖关系用虚线箭头表示。
示例:
动物依赖氧气和水。调用新陈代谢方法需要氧气类与水类的实例作为参数
可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A;比如某个老师要授课,则需要有这么一门课让他教授,此时老师与课之间的关系就是依赖;表现在代码层面,为类Course作为参数被类Professor在Teach方法中使用;

2.3关联
介绍:
对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。
它体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,普通关联关系的两个类处于同一层次上,关联可以是单向(只有一个类知道另外一个类的公共属性和操作)的也可以是双向(两个类都知道另一个类的公共属性和操作)的;大多数关联应该是单向的,单向关系更容易建立和维护,有助于寻找可服用的类。
表示方法:
关联关系用实线箭头表示。
示例:
企鹅需要‘知道’气候的变化,需要‘了解’气候规律。当一个类‘知道’另一个类时,可以用关联。

2.4聚合
介绍:
聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如书本与暑假、公司与员工的关系等;具体表现为,如果A由B聚合成,表现为A包含有B的全局对象,但是B对象可以不在A创建的时刻创建。
表示方法:
聚合关系用空心的菱形+实线箭头表示。
示例:
每一只大雁都属于一个大雁群,一个大雁群可以有多只大雁。当大雁死去后大雁群并不会消失,两个对象生命周期不同。
聚合关系
2.5组合
介绍:
组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,整体和部分的声明周期是相同的,也可以理解为如果A由B组成,表现为A包含有B的全局对象,并且B对象在A创建的时刻创建。比如你和你的大脑或一本书和它的书页。
表示方法:
组合关系用实心的菱形+实线箭头表示,还可以使用连线两端的数字表示某一端有几个实例。
示例:
鸟和翅膀就是组合关系,因为它们是部分和整体的关系,并且翅膀和鸟的生命周期是相同的。