UML-认识6种箭头(画类图无烦恼)

一、引言

因公司需求需要看懂类图以及能独立上手画类图,因类图中的基础就是6大箭头,而且6大箭头概念有些模糊,所以就有了此文章

二、箭头详解

UML中描述对象和类之间相互关系的方式包括:泛化、实现、依赖、关联、聚合、组合等。

2.1 泛化(Generalization)

2.1.1 概念

是一种继承关系(is-a),表示一般与特殊的关系,它指定了子类如何特化父类的所有特性和行为。例如:老虎是动物的一种,既有老虎的特性也有动物的共性。

2.1.2 图标

请添加图片描述

2.1.3 案例

请添加图片描述

2.2 实现(Realize)

2.2.1 概念

是一种类与接口的关系,表示类是接口所有特征和行为的实现。

2.2.2 图标

请添加图片描述

2.2.3 案例

请添加图片描述

2.3 依赖(Dependency)

2.3.1 概念

是一种使用的关系,即一个类的实现需要另一个类的协助。如方法参数需要传入另一个类的对象,就表示依赖这个类。

2.3.2 图标

请添加图片描述

2.3.3 代码体现

局部变量、方法的参数或者对静态方法的调用

2.3.4 案例

请添加图片描述

2.4 关联(Association)

2.4.1 概念

表示类与类之间的联接,它使一个类知道另一个类的属性和方法,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的。程序中一个类的全局变量引用了另一个类,就表示关联了这个类,关联关系分为单项关联和双向关联。在Java中,单向关联表现为:类A当中使用了类B,其中B作为类A的成员变量。双向关联表现为:类A当中使用了类B作为成员变量;同时类B中也使用了类A作为成员变量(双向关联有两个箭头或者没有箭头)。

2.4.2 图标

请添加图片描述

2.4.3 代码体现

成员变量

2.4.4 案例

请添加图片描述

2.5 聚合(Aggregation)

2.5.1 概念

是整体与个体的关系(has-a),且个体可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。聚合是关联关系的一种,是强的关联关系;关联和聚合在语义无法区分,必须考察具体的逻辑关系

2.5.2 图标

请添加图片描述

2.5.3 代码体现

成员变量

2.5.4 案例

请添加图片描述

2.6 组合(Composition)

2.6.1 概念

是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门的关系,没有公司就不存在部门。组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期

2.6.2 图标

请添加图片描述

2.6.3 代码体现

成员变量

2.6.4 案例

请添加图片描述

借鉴地址

### UML 中组合与聚合的区别及其表示方法 #### 组合关系 组合是一种特殊形式的整体-部分关系,具有更强的关联性和依赖性。在这种关系中,整体对象控制其组成部分的生命期;如果整体被销毁,则所有的部分也会随之消失。这种紧密联系意味着组件不能独立于它们所属的整体存在。 在UML里,组合通过带有实心菱形端点的线条来描绘[^1]。该符号表明了一个严格的拥有权——即当容器实体不再存活时,内部元素也将不复存在。例如,在一个订单系统中,“订单项”作为“订单”的一部分,一旦删除某个特定订单,则相应的订单条目也应一同移除。 ```mermaid classDiagram class Order { <<entity>> orderId : int datePlaced : Date } class LineItem { <<entity>> productId : string quantity : int } Order "1" --|> "many" LineItem : contains ``` #### 聚合关系 相比之下,聚合也是一种整体到部件的关系,但它代表的是较弱版本的整体-部分连接。这里的关键在于成员能够脱离主体单独生存下来。比如一所学校和它的教职员工之间就存在着这样的情况:即使某所教育机构关闭了,那些教职工仍然可以在其他地方继续工作而不受影响[^3]。 为了表达这一特性,在绘工具中会采用空心菱形箭头指向总体方框的方式呈现出来[^2]: ```mermaid classDiagram class University { <<entity>> name : String } class Teacher { <<entity>> id : Integer firstName : String lastName : String } University o-- "employs" Teacher ``` 综上所述,虽然两者都描述了一种整体与其构成要素间的互动模式,但在具体应用场景以及形化展示方面有着明显的差异。理解这些细微差别有助于更精确地建模软件系统的结构特征并传达意给团队成员或其他利益相关者。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值