UML类图和类之间的关系

统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,一种用于软件系统分析和设计的工具。UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系。

1. 类和接口的UML表示

使用三层矩形框表示
第一层是类的名称
第二层是属性
格式:

[可见性]属性名:类型[=默认值]

例如:- name: String

注意:“可见性”表示该属性对类外的元素是否可见,包括公有(Public)、私有(Private)、受保护(Protected)和默认(包访问)4 种,在类图中分别用符号+、-、#、~表示。

第三层是类的方法
格式:

[可见性]名称(参数列表)[:返回类型]

例如:+ study(): void
在这里插入图片描述

接口

使用两层矩形框表示,顶端有<<interface>>显示,不包含属性
第一层是接口名称
第二层是接口方法
在这里插入图片描述

2. 类之间的关系

泛化(继承)

【泛化关系】是一种继承关系,即子类继承父类或子接口继承父接口。

【符号及指向】带三角箭头的实线,箭头指向父类型。关于箭头指向的理解:子类型是知道父类型的存在的,父类型是不知道自己有没有子类型以及有哪些子类型的,只有知道对方的信息,才能指向对方。
在这里插入图片描述

实现

【实现关系】是一种类与接口的关系,即类实现接口

【符号及指向】带三角箭头的虚线,箭头指向接口。

在这里插入图片描述

依赖

【依赖关系】是一种使用关系,即一个类的实现需要另一个类的协助, 它是对象之间耦合度最弱的一种关系。

【代码体现】某个类的方法通过局部变量、方法的参数或者对静态方法的调用来访问另一个类(被依赖类)中的某些方法

【符号及指向】带箭头的虚线,箭头指向被依赖的类

例如,人与手机的关系,人通过手机的语音传送方法打电话
在这里插入图片描述

关联

【关联关系】是对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系,如老师和学生、客户和订单、丈夫和妻子等。关联关系是类与类之间最常用的一种关系,分为一般关联关系、聚合关系和组合关系。一般关联习惯上就称为关联关系。

【代码体现】 通常将一个类的对象作为另一个类的成员变量来实现关联关系

【符号及指向】关联可以是双向的,也可以是单向的。在 UML 类图中,双向的关联可以用带两个箭头或者没有箭头的实线来表示,单向的关联用带一个箭头的实线来表示,箭头从使用类指向被关联的类。

如图所示是老师和学生的关系图,每个老师可以教多个学生,每个学生也可向多个老师学习,他们是双向关联:
在这里插入图片描述

聚合

【聚合关系】是关联关系的一种特例,是整体与部分的关系,且部分可以离开整体而单独存在,是一种不稳定的包含关系,它们有各自独立的生命周期;例如:公司和员工的关系,公司包含员工,但如果公司倒闭,员工依然可以换公司上班。

【代码体现】通常将一个类的对象作为另一个类的成员变量来实现聚合关系。在代码层面和和关联关系是一致的,只能从语义级别来区分

【符号及指向】带空心菱形的实线,菱形指向整体
在这里插入图片描述

组合

【组合关系】也是关联关系的一种特例,也是整体与部分的关系,但部分不能离开整体而单独存在,这种关系比聚合更强,是一种稳定的包含关系。整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。

【代码体现】通常将一个类的对象作为另一个类的成员变量来实现组合关系。在代码层面和和关联关系是一致的,只能从语义级别来区分

【符号及指向】带实心菱形的实线,菱形指向整体
在这里插入图片描述

区别

  • 聚合关系、组合关系与关联关系的区别

聚合关系、组合关系和关联关系实质上是对象间的关系(继承和实现是类与类和类与接口间的关系)

从语意上讲,关联关系中两种对象间一般是平等的,而聚合和组合则代表整体和部分间的关系

而聚合与组合的区别主要体现在生命周期的管理上

  • 依赖关系与关联关系的区别

依赖关系是较弱的关系,一般表现为 某个类的方法通过局部变量、方法的参数或者对静态方法的调用来访问另一个类(被依赖类)中的某些方法

而关联关系是相对较强的关系,一般表现为一个类作为另外一个类的属性

某个类的方法通过局部变量、方法的参数或者对静态方法的调用来访问另一个类(被依赖类)中的某些方法

类之间的强弱关系排序:泛化 > 实现 > 组合 > 聚合 > 关联 > 依赖

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值