类与类之间的关系通常有4种:

  • 依赖关系(Dependency)
  • 泛化关系(Generalization)
  • 关联关系(Association)
  • 实现关系(Realization)
  • ……

依赖关系(Dependency),表示两个或多个模型元素之间语义上的连接关系,“绘图方式”虚线箭头,箭头指向被使用者。

泛化关系(继承)(Generalization),描述类的一般与具体之间的关系,描述的“is a kind of”的关系,“绘图方式”实线空心三角箭头,箭头指向父类。

关联关系(Association),表示一个事物的对象与另一个事物的对象之间的语义上连接,简单的理解为两个类或类与接口之间的强依赖关系。“绘图方式”实线箭头,双向箭头或无箭头。

实现关系(Realization),将一种模型关系与另一种模型关系连接起来,从而说明和其实现之间的关系,简单的理解为一个类或多个类实现一个接口,“绘图方式”封闭空箭头虚线,箭头指向接口。

1. 泛化(Generalization)

【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。

【箭头指向】:带三角箭头的实线,箭头指向父类

2. 实现(Realization)

【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现.
【箭头指向】:带三角箭头的虚线,箭头指向接口

)

3. 关联(Association)

【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。

【代码体现】:成员变量

【箭头及指向】:带普通箭头的实心线,指向被拥有者

上图中,老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。

下图为自身关联:

4. 聚合(Aggregation)

【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。

聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。

【代码体现】:成员变量

【箭头及指向】:带空心菱形的实心线,菱形指向整体

5. 组合(Composition)

【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。

组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

【代码体现】:成员变量

【箭头及指向】:带实心菱形的实线,菱形指向整体

## 6. 依赖(Dependency)

【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.

【代码表现】:局部变量、方法的参数或者对静态方法的调用

【箭头及指向】:带箭头的虚线,指向被使用者

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

下面这张UML图,比较形象地展示了各种类图关系:

转载/整理:
UML类图几种关系的总结:https://blog.csdn.net/tianhai110/article/details/6339565
希赛教育的试题:https://www.educity.cn/

笔记-信息系统开发基础-uml-uml类图关系相关推荐

  1. 笔记-信息系统开发基础-信息系统生命周期

    1. 生命周期阶的五阶段划分 为了有效地进行系统的开发和管理,根据系统生命周期的概念,一般可以将信息系统的开发分成5个阶段,即总体规划阶段.系统分析阶段.系统设计阶段.系统实施阶段.系统运行和评价阶段 ...

  2. 笔记-信息系统开发基础-信息系统开发方法

    信息系统开发方法知识,信息系统开发方法分为: 1.结构化开发方法 2.面向对象开发方法 3.原型化开发方法 4.面向服务的方法 1. 结构化开发方法 (Structured method) Struc ...

  3. 笔记-信息系统开发基础-面向对象基本概念-对象和类

    (1)对象 由数据及其操作所构成的封装体,是系统中用来描述客观事物的一个模块,是构成系统的基本单位. 对象包含三个基本要素,分别是对象标识.对象状态和对象行为. 例如,对于姓名 (标识)为Joe的教师 ...

  4. 笔记-信息系统开发基础-架构设计-软件架构主要职责

    软件架构主要职责 (1)确认需求在项目开发过程中,架构师是在需求规格说明书完成后介入的,需求规格说明书必须得到架构师的认可.架构师需要和分析人员反复交流,以保证自己完整并准确地理解用户需求. (2)系 ...

  5. 笔记-信息系统开发基础-信息系统规划方法-大型新信息系统特征/企业系统规划步骤...

    一.大型信息系统特征 规模庞大 跨地域性 网络结构复杂,大型信息系统一般采用多级网络结构.跨域多个安全域.网络关系复杂.接口众多. 业务种类多 数据量大 用户多 二.企业系统规划(BSP)的步骤 企业 ...

  6. 笔记-信息系统开发基础-软件测试-软件测试的类型

    本题考查软件测试的类型相关知识,请参考<信息系统项目管理师教程>第3版P50 (1)单元测试 单元测试也称为模块测试,测试的对象是可独立编译或汇编的程序模块.软件构件或00软件中的类(统称 ...

  7. 笔记-信息系统开发基础-信息系统开发模型

    信息系统项目的生命周期模型主要包括有瀑布模型.V模型.喷泉模型.螺旋模型.统一过程,增量.迭代模型. 1. 瀑布模型 瀑布模型是一个经典的软件生命周期模型,一般将软件开发分为可行性分析(计划).需求分 ...

  8. 笔记-信息系统开发基础-架构设计-软件系统架构视图

    软件系统架构视图是从特定的视角出发,专注于该视角系统的结构,模块划分,基本组件职责和主要的控制流(协作接口). Kruchten(克鲁奇顿)在1995年提出了一个"4+1"的视图模 ...

  9. 笔记-信息系统开发基础-CMMI过程域分类-连续式的模型

    CMMI过程域可以分为4类(连续式的模型),包括项目管理.过程管理.工程和支持等4个类别. 1. 项目管理类过程域 项目管理类过程域涵盖了与项目的计划.监督和控制相关的项目管理活动. CMMI-DEV ...

最新文章

  1. TensorFlow创建DeepDream网络
  2. iOS开发几年了,你清楚OC中的这些东西么!!!?
  3. 面试题准备--CSS
  4. [2021.07.25更新]循环冗余校验(CRC)的MATLAB实现
  5. Java JNI初探
  6. 版本字符串比较工具接口常用接口函数
  7. 挑战10个最难的Java面试题(附答案)【下】
  8. PipeCAD之管道标准库PipeStd(3)
  9. 微服务的一种开源实现方式——dubbo+zookeeper
  10. 数据结构和算法———P3 时间复杂度和空间复杂度
  11. 做消息推送 8 年的极光,为何做物联网 JIoT 平台?
  12. Visual Studio 2010 Ultimate敏捷之道:特性解析
  13. 下载软件的临时文件思路和实现
  14. java学习之路目录(已完结)
  15. 线性回归与分类, 解决与区别
  16. Ubuntu20.04安装搜狗输入法指南
  17. 人生的康波周期,把握住一次,足以改变命运!
  18. html input datetime格式化及后端接收
  19. KubeCon + CloudNativeCon + Open Source Summit 2019大会上海开幕看点不断!
  20. C#调用bartender进行动态打印以及批量打印的完整教程

热门文章

  1. Intel Realsense D435使用生成器初始化多个摄像头(c语言vector)
  2. PAT甲级题目翻译+答案 AcWing(数学)
  3. Graph Theory 图论 贪心 栈 思维
  4. Spring Cloud Alibaba:@SentinelResource注解的使用
  5. vb调用matlab工具箱,Matlab与VB集成 - 关于VB的经验之谈 - VB爱好者乐园(VBGood) - 关于VB的经验,电子教程,代码,控件,论坛,博客,微博等....
  6. ua获取手机型号_无牌山寨手机的数据提取解决方案
  7. c语言循环结构程序设计视频,第13讲:循环结构程序设计1
  8. c++矩阵转置_C语言:数据结构-稀疏矩阵的压缩存储
  9. python listbox输入内容自动换行_python中的图像界面设计(二)
  10. 7 pe系统安装_【软件课程之家】PE系统安装教程