在画UML类图的时候,会通常用各种连线来表示类与类,类与接口直接的关系,startUML中提供了各种关系的箭头,本篇文章就是介绍这些关系的。sartaUML中提供的关系有如下几种:
------------------------------------------------------------------------------------------------------------------------------------------------------------------
以上就是一个实际的关系类图来依次介绍这几种关系的情形:
Assocaition和DirectedAssocaition:
关联关系:关联关系是用一条直线表示的,它描述不同类的对象之间的结构关系,它是一种静态关系,通常与运行状态无关,一般由常识等因素决定的。它是一种“强联“的关系.关联关系默认不强调方向,表示对象间相互知道,如果特别强调方向,则使用箭头。
例子:
a.乘车人与车票
b.学生和学校
如上例子所示:学校和学生互相知道,学生知道车票,车票不知道学生,都是强关系。
Aggregation:
聚合关系:聚合关系是用一条带空心菱形的直线表示,用于表示实体对象之间的关系,表示整体由部分构成。
例子:
部门和员工
如上例子所示:部门是由员工组成的,但不是强依赖关系,及部门不存在了,员工可以存在。
Composition:
组合关系:用一条带实心菱形箭头直线表示。菱形所在的一端代表主体,表示前者组成了主体,或者主体由其他的组成。
例子:
部门和公司
如上例子所示:公司是由部门组成的,但是是抢依赖关系,公司不存在了,则部门存在。
Generalization:
泛化关系:类的继承is-a关系,两个对象之间如果可以用is-a来表示,就是继承关系。泛化关系用一条带空心箭头的直接表示。
例子:
自行车和车
猫和动物
如上例子所示:自行车继承车,猫继承动物,在代码中泛化关系表示类继承抽象类。
Dependency:
依赖关系:用一套带有箭头的虚线表示,带箭头的一端表示被依赖,他描述一个对象在运行期间会用到另一个对象。与关联关系不同的是,它是一种临时性的关系,通常在运行期间产生,并且随着运行时的变化,依赖关系也可能发生变化。
例子:
学生和自习车
如上例子所示:学生依赖自行车,在最终代码中,依赖关系体现为类构造方法及类方法的传入参数,箭头的指向为调用关系。
Realization:
实现关系:用一条带空心箭头的虚线表示。
例子:
图纸和房子
如上例子所示:房子实现了图纸这个接口,在最终代码中,实现体系为类实现某个接口。