首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

UML 各类关系介绍

继承关系(generalization)

继承关系用一条带空心箭头的直线表示。如下图所示(A继承自B):

继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。继承关系为的关系,是类与类或者接口与接口之间最常见的关系之一,在Java中此类关系通过关键字来表示。

注意:表现在代码中,继承关系表现为一个类继承另一个类或者一个接口继承另一个接口

实现关系(realization)

实现关系是用一条带空心箭头的虚线表示。如下图所示(A实现B)::

实现指的是一个类实现接口(可以是多个)的功能。实现是类与接口之间最常见的关系之一,在Java中此类关系通过关键字来表示。

注意:表现在代码中,实现关系表现为普通类实现某个接口

关联关系(association)

关联关系是用一条可能会有方向的直线表示的。关联关系默认不强调方向,表示对象间相互知道;如果特别强调方向,如上图,表示A关联B,但B不关联A;如下图所示:

关联关系体现的是两个类、或者类与接口之间语义级别的一种强依赖的结构关系,是一种长期的静态稳定的关系,通常与运行状态无关,一般由常识等因素决定的。

例如:乘车人和车票之间就是一种关联关系。

注意:表现在代码中,被关联类以类属性的形式出现在关联类中,也可能是关联类引用了一个类型为被关联类的全局变量

聚合关系(aggregation)

聚合关系用一条带空心菱形箭头的直线表示,如下图所示A聚合到B,或者说B由A组成。

聚合关系用于表示实体对象之间的关系,表示整体由部分构成的意思。聚合是关联关系的一种特例,它体现的是整体与部分、拥有的关系,即的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。例如一个部门由多个员工组成。

注意:表现在代码中,和关联关系是一致的,只能从语义级别来区分。聚合与组合不同的是,整体和部分不是强依赖的,即使整体不存在了,部分仍然存在;例如,部门撤销了,人员不会消失,他们依然存在。

组合关系(composition)

组合关系用一条带实心菱形箭头的直线表示,如下图表示A组成B,或者B由A组成。

组合关系同样表示整体由部分组成的意思。与聚合关系一样,组合也是关联关系的一种特例,它体现的是一种整体与部分不可分割的关系,即的关系,这种关系比聚合更强,也称为强聚合。例如公司由多个部门组成组合,但此时整体与部分是不可分离的,整体的生命周期结束也就意味着部分的生命周期结束。

注意:表现在代码中,和关联关系是一致的,只能从语义级别来区分。组合关系是一种强依赖的特殊聚合关系,如果整体不存在了,则部分也就不存在了。例如,公司不存在了,部门也将不存在了。

依赖关系(dependency)

依赖关系是用一套带箭头的虚线表示的;如下图表示A依赖于B;他描述一个对象在运行期间会用到另一个对象的关系。

依赖关系是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A,与关联关系不同的是,它是一种临时性的关系,通常在运行期间产生,并且随着运行时的变化依赖关系也可能发生变化。

显然,依赖也有方向,双向依赖是一种非常糟糕的结构,我们总是应该保持单向依赖,杜绝双向依赖的产生。

注意:表现在代码中,依赖关系体现为类的构造方法及类方法的传入参数

UML类关系图示例

请看以下这个UML类关系图:

开车的类图结构表示的是一个接口

有一个自行车的抽象类,实现了开车的接口,它们之间的关系为实现关系,使用带空心三角箭头的虚线表示

自行车与摩拜单车之间是继承关系,使用带空心三角箭头的实线表示

学生上学需要用到摩拜单车,与摩拜单车是一种依赖关系,使用带箭头的虚线表示

学生与身份证之间为关联关系,使用一根实线表示,如果两个类之间互相通过属性引用,则是双向关联关系

学生与班级、学生与学校之间是聚合关系,使用带空心菱形箭头的实线表示

学校与班级是组合关系,使用带实心菱形箭头的实线表示

source: //bigjun2017.github.io/2018/10/22/ruan-jian-she-ji/uml-ge-lei-guan-xi-jie-shao

喜欢,在看

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20211111A0DDX400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券