在UML类图中,常见的有以下几种关系:
继承(泛化)
继承也被称为Is-A关系, 自行车是车、猫是动物
表示:泛化关系用一条带空心箭头的直接表示

实现
接口实现

依赖
Uses-A 关系
它用于定义一个类以某种方式依赖于另一个类,而另一个类可能依赖于或不依赖于第一个类。通常,在面向对象的编程语言中,依赖关系用于描述一个类在方法的声明中是否包含第二个类的参数,或者说它只是通过方法将第二个类传递给其他类,而不是使用方法来创建第二个类的实例。
依赖也有方向,双向依赖是一种非常糟糕的结构,我们总是应该保持单向依赖,杜绝双向依赖的产生;
在最终代码中,依赖关系体现为类构造方法及类方法的传入参数,箭头的指向为调用关系;依赖关系除了临时知道对方外,还是“使用”对方的方法和属性;
表示:依赖关系是用一套带箭头的虚线表示的。B依赖于A,描述一个对象在运行期间会用到另一个对象的关系

关联
Has-A关系
关联表示两个实体之间的关系。有两种类型的关联:组合和聚合。通常,关联关系由箭头表示。
如果特别强调方向,如下图,表示B知道A,但 A不知道B;

聚合
整体和部分不是强依赖的。
一个类在逻辑上包含另一个类,但所包含的类的实例又可以独立于第一个类在其上下文之外生存,或者可以被其他的类所引用。
例如,部门与教师间存在Has-A关系,每位教师必须属于部门,但如果部门不再存在,教师仍然可以处于活动状态,
老师聚合到部门上,或者部门由老师组成。
表示:聚合关系用一条带空心菱形箭头的直线表示

组合
一个类是另一个类的组成部分就称两者间存在组合关系。这有点类似于聚合,不同之处在于当主类不再存在时,依赖类不再存在。例如,房子(House)由房间(Room)组成,但如果房子被销毁,房间就不再存在,
表示:组合关系用一条带实心菱形箭头直线表示。

依赖与关联的区别
关联:互相贯连的意思,是比较强的关系,是长期关系。 类A关联B的含义是:如果实例化一个A类的对象,同时会有一个B类的对象被实例化。
依赖:成瘾的意思,玩游戏上瘾,你也可以戒掉,所以依赖只是临时关系
关系整合图
来源于网上
