UML构造块中的关系梳理

UML构造块中的关系梳理

UML由构造块,规则和公共机制组成,而构造块包含事物,关系,图。本文重点梳理UML构造块中各种关系以及图形表示。

1.UML构造块总览

复制代码
UML构造块
├── 事物 (Things) - "模型中的基本元素"
│   ├── 结构事物 (Structural Things) - 静态部分,如类,接口,用例
│   ├── 行为事物 (Behavioral Things) - 动态部分,如活动,交互
│   ├── 分组事物 (Grouping Things) - 组织机制
│   └── 注解事物 (Annotational Things) - 说明部分
├── 关系 (Relationships) - "连接事物的纽带"
│   ├── 依赖 (Dependency)
|   |    |------ 包含《include》
|   |    |------ 扩展《extend》
│   ├── 实现 (Realization)
│   ├── 泛化 (Generalization) / 继承
│   └── 关联 (Association)
|   |    |------ 聚合
|   |    |------ 组合
└── 图 (Diagrams) - "事物的可视化集合"
    ├── 结构图 (Structural Diagrams) - 6种,展现静态结构
    │   └── 类图、对象图、组件图、部署图、包图、复合结构图
    └── 行为图 (Behavioral Diagrams) - 7种,展现动态行为
        └── 用例图、序列图、通信图、活动图、状态机图、定时图、交互概览图

2.依赖关系

依赖(Dependency)。依赖是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义。在图形上,把一个依赖画成一条可能有方向的虚线。例如 A ----------> B

(1)在用例图中,用两种子类型的依赖:包含与扩展。

《extend》(扩展关系)

  • 箭头方向 :箭头指向被扩展的基用例

  • ​ 《extend》

  • 表示:扩展用例 -------------------------> 基用例

  • 示例:下单用例《extend》添加紧急配送,箭头指向"下单"

(2)《include》(包含关系)

  • 箭头方向 :箭头指向被包含的用例

    ​ 《include》

  • 表示:基用例 -------------------------> 包含用例

  • 示例:登录《include》验证密码,箭头指向"验证密码"

注意: A ---------------------> B 表示调用

2.实现(Realization)

实现是类元之间的语义关系,其中一个类元指定了由另一个类元保证执行的契约。在两种情况下会使用实现关系:一种是在接口和实现它们的类或构件之间;另一种是在用例和实现它们的协作之间。在图形上,把一个实现关系画成一条带有空心箭头的虚线

实现:类 -------------▷ 接口

3.关联(Association)

关联是一种结构关系,它描述了一组链,链是对象之间的连接。表示:一条关联实线,连接到一个用虚线连接。

例子学生 --------------- 课程 之间的关联,需要记录"成绩"、"选修学期"等信息。这些信息属于关联本身,而不是学生或课程。因此可以创建一个选修记录类作为关联类。这种关系有点类似ER图中的联系。多重度是关联上的一个重要约束,描述关联对象的数量关系。标注在关联线的两端。

  • 常见表示:1(恰好1个), 0..1(0或1个), *0..*(0个或多个), 1..*(1个或多个), n..m(n到m个)。
  • 例如:公司 1 ------------------ * 员工(一家公司有多个员工,一个员工属于一家公司)。

关联有两种特殊化的关系:聚合与组合。用于描述部分与整体的关系。

  • 聚合:表示"has-a"关系,是一种松散的整体与部分关系。部分可以独立于整体而存在。

    • 表示 :带空心菱形的实线,菱形指向整体。

    • 例子:公司 ◇---------------员工。公司由员工组成,但员工离职后可以加入另一家公司,自身仍然存在。

      ​ 汽车 ◇--------------- 轮胎(轮胎可以单独存在)

  • 组合 :表示"contains-a/part-of"关系,是一种严格、强归属的整体与部分关系。部分的生命周期依赖于整体。

    • 表示 :带实心菱形的实线,菱形指向整体。

    • 例子:房间 ◆---------------窗户。窗户是房间的一部分,房间不存在了(被拆除),窗户也随之被毁。这是比聚合更强的关联。

      ​ 公司 ◆--------------- 部门(部门不能独立于公司存在)

4.泛化(Generalization)

泛化是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象。用这种方法,子元素共享了父元素的结构和行为。在图形上,把一个泛化关系画成一条带有空心箭头的实线,它指向父元素。

示例:子类 ------------------▷ 父类


愿你我都能在各自的领域里不断成长,勇敢追求梦想,同时也保持对世界的好奇与善意!

相关推荐
无籽西瓜a18 小时前
【西瓜带你学设计模式 | 第十期 - 外观模式】外观模式 —— 子系统封装实现、优缺点与适用场景
java·后端·设计模式·软件工程·外观模式
无籽西瓜a18 小时前
【西瓜带你学设计模式 | 第九期 - 代理模式】代理模式 —— 静态与动态代理实现、优缺点与适用场景
java·后端·设计模式·软件工程·代理模式
张较瘦_1 天前
软件工程 | 需求三层次:用正反对比例子,把复杂概念讲明白
大数据·软件工程
qq_452396231 天前
【测试之道】第四篇:分层测试论 —— 金字塔、奖杯与蜂巢:构建你的质量防御阵型
功能测试·软件工程
极创信息1 天前
信创软件安全加固指南,信创软件的纵深防御体系
java·大数据·数据库·金融·php·mvc·软件工程
m0_651593912 天前
领域驱动设计(DDD)实战指南:如何正确构建复杂系统
java·软件工程·ddd
极创信息2 天前
企业信创产品认证全流程:从信创适配到信创认证的实操指南(2026版)
java·数据库·spring boot·mysql·matlab·mybatis·软件工程
workflower2 天前
未来图景对制造系统提出全面理解、
设计模式·集成测试·软件工程·软件构建·制造·结对编程
qq_452396232 天前
【测试之道】第三篇:白盒方法论 —— 逻辑覆盖与路径分析:深入代码的“毛细血管”
功能测试·软件工程
watersink2 天前
第3章 软件工程
软件工程