类图是UML结构图,在类和接口的层次上显示设计系统的结构,显示它们的特性、约束和关系等,是定义其它图的基础。
如上图,在类图中表示方法如下:
在uml类图中,类之间关系有如下:
泛化是继承
关系的一种,子类继承父类的所有行为和属性,子类可以新增新的功能或者重写父类功能。
uml中使用
带空心三角箭头的实线
表示 【箭头指向】:箭头指向父类
实现是接口
和类的关系,是指类实现了接口中定义的接口
uml中用带
空心三角箭头的虚线
表示 【箭头指向】:箭头指向接口类
在建模过程中必然存在类之间的联系,使类可以感知其他类的行为和属性,关联分为双向和单向关联
对于双向关联来说被关联的两个类可以感知对方的存在
如图在线每端放置一个角色和多重值, 对于Route来说,我们应该看在bike端的角色和多重值。对于Route来说,每个骑行路线对应0个或者多个自行车,0个是因为可能先制定了骑行路线但是还没有找到自行车,多个是因为可以有多个人骑行同一个路线。 对于bike来说我们应该看route端的角色和多重值,对于一个bike来说每个自行车对于0个或者多个骑行路线,0个是因为虽然有一个自行车但是我可以不骑行,不指定骑行路线那,多个是因为我一个自行车可以指定多个骑行路线。
上面多重值为0…*
,其实还有其他多重值如下表:
表示 | 含义 |
---|---|
n | 只能n个 |
0…n | 0到n个 |
0…* | 0个及以上 |
n…* | n个以上 |
============================== | ============================== |
0…1 | 0个或1个 |
1 | 只能1个 |
0…* | 0个或多个 |
* | 0个或多个 |
1…* | 1个或多个 |
3 | 只能3个 |
0…5 | 0到5个 |
5…15 | 5到15个 |
对于一个单向关联来说也是两个类是相关的,但是只有一个类知道这种联系的存在
如图,对于单向关联表示为一条带有指向已知类的开放箭头实线,单向关联只包含一个角色名和多重值,一个人可以有0个或者多个账户,人可以感知到账户的存在,但是账户却感知不到人的存在。
聚合是关联关系的一种
,聚合主要描述整体与部分
直接的关系,聚合有分为基本聚合和组合聚合
通常也称之为聚合 对应基本聚合来说,部分类的生命周期独立于 整体类 的生命周期
两者有独立的生命周期,has-a 的关系
uml中使用一条从整体类到部分类的实线,并在整体类的关联末端画一个未填充棱形标示:
一个汽车有4个轮子组成,轮子的生命周期不依赖与车的,因为车轮可以独立于车独立存在。
组合聚合是聚合的一种情况,不同在于部分类的生命周期依赖整体类。
两者有相同的生命周期,contains-a 的关系
uml中使用一条从整体类到部分类的实线,并在整体类的关联末端画一个填充棱形标示
一个公司有至少一个部门组成,部门要依赖于公司的存在而存在,不会存在一个部门而它不属于某一个公司。
自身关联涉及到一个类,是类自己关联自己的情况
一个雇员可以有0个或者多个管理者,而管理者本身也是雇员的一种。
依赖即一个类的实现需要其他类的协助,通常代码表现为方法参数
,局部变量
,静态方法调用
,util类调用
uml中使用一条箭头的虚线,从依赖方指向被依赖的类
下面围绕类Library类分析下这个图
下面围绕Catalog分析
下图摘自《大话设计模式》