UML类与类之间的关系

文中图片来自 http://c.biancheng.net/view/1319.html

统一建模语言(Unified Modeling Language,UML)
类与类之间的关系UML里分为六种,分别为:泛化,实现,依赖,关联,组合,聚合。
按照自己理解的逻辑顺序分别解释如下:

菱形表示的关系

首先是组合,人的头是由嘴巴,耳朵等组合而成,这个是不可分割的,没有头就没有嘴巴、耳朵,所以组合的关系是最强的。
【组合关系表示方法】:因为是最强所以必须的实线实心菱形表示,菱形指向整体
如下图所示

最强组合关系

组合是contains的关系,头没了,嘴巴也不会存在。所以是部分和整体的逻辑。没有整体,也就没有部分。

其次是聚合,老师聚合到一起形成了学校,没有学校,老师也存在。所以老师和学校是聚合的关系,用实线空心菱形表示。
【聚合关系表示方法】:带空心菱形的实心线,菱形指向整体

聚合

三角形表示的关系

泛化=继承 is a的关系 这个学Java的都比较熟悉了,老师和学生都是人, 这就是泛化关系。在UML里泛化用空心三角形表示。
【泛化关系表示方法】:带三角箭头的实线,箭头指向父类

泛化关系图

实现 这个是就是面向接口编程里最熟悉的了 **ServiceImpl。
【实现关系表示方法】:带三角箭头的虚线,箭头指向接口
定义一个车辆接口,用汽车类去实现(用轮船去实现车辆接口感觉有点怪怪的 别人的图 我尊重原创不改了哈哈)

实现

箭头表示的关系

关联,顾名思义就是对象之间的关系,这里用数据库关系来描述更容易理解,老师表和学生表之间是有关联的,这个是双向的,老师有多个学生,学生有多个老师 所以是双向关联关系。学生表和课程表 是单向关联,课程表有学生表的id。
用Java来描述就是 Teacher类里面如果定义了Student成员变量就代表Teacher和Student是关联关系,图表示就是Teacher作为起点指向Student
【关联关系表示方法】:双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。

关联关系图

依赖 依赖是最弱的关系了(随时可以不依赖嘛),人依赖手机打电话,随时可以换个手机或电脑,所以这个是用虚线表示。如下图
【依赖关系表示方法】依赖方是起点,带箭头的虚线到被依赖方

依赖关系图

重新总结下:
关系按照有强到弱分为 组合 聚合 泛化 实现 关联 依赖 分别是菱形2个 三角形2个 箭头2个
菱形里面一实心一空心 三角形里面 一实线 一虚线 箭头一实线一虚线 (三角形都是空心的)

你可能感兴趣的:(UML类与类之间的关系)