UML几种关系的理解

文章介绍了UML作为面向对象系统建模的标准语言,重点关注类图中的六种关系:泛化(继承)、实现、组合、聚合、关联和依赖。这些关系从强到弱的顺序为:泛化=实现>组合>聚合>关联>依赖,并详细解释了每种关系的含义和表示方式。
摘要由CSDN通过智能技术生成

一、UML介绍

统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML是面向对象设计的建模工具,独立于任何具体程序设计语言。

二、UML类图中常见的关系

1.泛化关系(Generalization)

表示类与子类的继承关系。泛化关系使用空心三角形箭头表示,箭头指向父类,例如,一个猫类继承自动物类,可以用如下图所示的泛化关系表示:
泛化

2.实现关系(Realization)

表示类实现一个接口或抽象类。实现关系使用带空心箭头的虚线表示,箭头指向接口或抽象类,例如,一个图形类实现了可绘制接口,可以用如下图所示的实现关系表示:
实现

3.组合关系(Composition)

表示整体与部分之间的强关系,即一个类对象包含另一个类对象,并且包含的对象的生命周期与该类对象相同。组合关系是一种比较紧密的关系,整体对象和部分对象的生命周期是相同的,部分对象不能独立于整体对象而存在。例如,如公司和部门是整体和部分的关系,没有公司就不存在部门。组合关系通常使用实心菱形箭头表示 (整体与部分,不能单独存在,一种强关联)
可以用如下图所示的组合关系表示:
组合关系示例
组合

4.聚合关系(Aggregation)

表示整体与部分之间的关系,即一个类对象包含另一个类对象。聚合关系是一种比较松散的关系,整体和部分可以独立存在,但整体对象可以包含多个部分对象。例如,车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。聚合关系通常使用空心菱形箭头表示
以用如下图所示的聚合关系表示:
聚合

5.关联关系(Association)

表示一个类对象与另一个类对象之间的关系,即一个类对象引用另一个类对象。关联关系是一种比较松散的关系,两个类对象可以独立存在,没有强依赖关系。例如:老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。关联关系通常使用普通箭头表示 ,双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头
可以用如下图所示的关联关系表示:
关联

6. 依赖(Dependency)

依赖表示的是类与类之间的调用关系,通常是一个类的方法的参数类型是另一个类。依赖关系也是类与类之间的关联 。依赖总是单向的。依赖关系在 Java语言中体现为局部变量、方法的参数或者对静态方法的调用。总的来说:依赖是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不要使用双向的相互依赖
依赖

三、总结

各种关系的强弱顺序:
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

关系符号表示箭头指向代码表现
泛化关系空心三角形+实线箭头指向父类extends关键字
实现关系空心三角形+虚线箭头指向接口implements关键字
组合关系实心菱形+实线箭头菱形指向整体成员变量
聚合关系空心菱形+实线箭头菱形指向整体成员变量
关联关系实线箭头指向被拥有者成员变量
依赖关系虚线箭头指向被使用者局部变量、方法的参数或者对静态方法的调用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值