类图最上面显示类的名称,中间部分包含类的属性,最下面的部分包含类的方法。
类图可以表示实体之间的相互关系,类之间有三种基本关系:
关联
聚合,组合
泛化
依赖
一.关联
关联指的是类之间的特定关系。
简单的可以认为,如果一个类作为了另外一个类的属性,那一定是关联关系。一般的关联我们认为是平级的、无整体部分关系的,如朋友关系。
UML中用带实线的箭头表示。
按照类之间的数量对比,关联可分为以下3种:
一对一关联:
一对多关联:
多对多关联:
每一个关联都有两个端点,每一个端点都有一个角色名,显示出角色的本质。一个关联可以有一个方向箭头,表明遍历或查询的方向。在每一个关联的端点,还可以有一个基数。表明一端的类可以有几个实例。
常见基数如下表所示:
基数 | 含义 |
0...1 | 0个或1个实例 |
0...*或者 * | 对视力的数目没有限制(可以是0) |
1 | 只有一个实例 |
1...* | 至少有一个实例 |
按关联方向上分为以下2种:
单向关联:
双向关联:
关联包含两种特例:聚合和组合,统称为聚集。聚合和组合都有部分和整体的关系。
组合比聚合更加严格。聚合是一种特殊的关联,而组合又是一种特殊的聚合。
聚合:表示两个对象之间是整体和部分的弱关系,部分的生命周期可以超越整体。被聚合的子系统允许被拆卸和替换。右被称为普通聚集关系。
聚合的部分可以在整体之间进行共享。
如电脑和鼠标。
如台灯和灯泡之间的关系.台式机与硬件配件等.
聚合使用带空心菱形框的实线表示。
组合:表示两个对象之间是整体和部分的强关系,部分的生命周期不能超越整体,或者说不能脱离整体而存在。被组合的子系统不允许被拆卸和替换.又被称为强聚集关系。
组合关系的“部分”不能在整体之间进行共享。
如人和眼睛。
如台灯和台灯上的电源线.
组合则使用带实心菱形框的实现表示。
二.泛化
泛化指的是类之间的继承关系,在UML中用带实线的三角形箭头表示。
三.依赖
依赖指的是类之间的调用关系。
依赖是对象之间的临时关系。被依赖的对象的生命周期一般不超过方法的周期。简单的说,在方法使用到的,如参数类,或方法的局部对象的类,就一定是依赖关系。
如果类A访问类B的属性或方法,或者类A负责实例化类B的属性或方法,那么可以说类A依赖类B。和关联关系不同,无须在类A中定义类B的属性。
在UML中带虚线的箭头表示。
四.实现
实现指的是类与接口之间的关系,在UML中用带虚线的三角形箭头表示。
这里的接口指的是接口类型,接口名字用斜体字表示。
接口中的方法都是抽象方法,也采用斜体字表示。
=========================================================================
区分依赖,关联和聚集关系
三种关系的相同点:当对象A和对象B之间存在依赖或者关联或者聚集关系时,对象A都有可能调用对象B的方法.
三种关系各种的特点
1. 依赖关系的特征
对与两个相对独立的系统,当一个系统负责构造另一个系统的实例,或者依赖另一个系统的服务时,这两个系统之间主要体现为依赖关系.
例:
生产零件的机器和零件,机器负责构造零件对象.
充电器和充电电池.,充电器用充电电池来充电.
自行车和打气筒,自行车通过打气筒来充气.
2. 关联关系的特征
对于两个相对独立的系统,当一个系统的实例与另一个系统的一些特定实例存在固定的对应关系时,这两个系统之间为关联关系.
例:
客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单.
公司和员工,每个公司公司对应一些特定的员工,每个员工对应特定的公司.
自行车和主人,每个自行车属于特定主人,每个主人有特定的自行车.
3. 聚集关系的特征
当系统A被加入到系统B中,成为系统B的组成部分时,系统B和系统A为聚合关系.
例:
自行车和它的龙头,轮胎,
人和他的头,四肢,躯干.
聚集和关联的区别:
关联关系的两个对象,多数情况下,两个对象的生命周期独立存在.
但在个别情况下,一方面会制约另一方的生命周期.比如客户和订单,当客户不存在时,订单也失去意义.
聚集关系的两个对象,整体对象会制约它的组成对象的生命周期.部分类不能单独存在,当整体消失时,部分也就消失.