编程设计之三 -- UML

UML是Unified Modeling Language缩写,译为统一建模语言,UML教程 https://sparxsystems.com/resources/tutorials/uml2/index.html

UML规范定义了两种主要的UML图,分别为结构图和行为图。

  • 结构图:显示了系统及其部件在不同抽象和实现级别上的静态结构以及它们如何相互关联。结构图中的元素表示系统的有意义的概念,并且可以包括抽象的,现实的和实现的概念。包括:类图、对象图、包图、组件图、复合结构图、部署图、配置文件图。

  • 行为图:显示了系统中对象的动态行为,可以将其描述为系统随时间的一系列更改。包括:用例图、活动图、状态图、顺序图、时序图、通信图、交互概览图

可以总结让deepseek基于Markdown 编写UML图,比较清晰

1、类图

关系类型 英文 符号 图标示意 箭头方向 生命周期
继承 Generalization 空心三角 + 实线 ▷─── 子类 → 父类 父类先存在,子类基于父类创建;父类销毁不影响子类; 模版
实现 Realization 空心三角 + 虚线 ▷ - - - 实现类 → 接口 接口(纯虚函数)定义契约,实现类遵循契约;两者生命周期独立
关联 Association 普通箭头 + 实线 ─────▶ 使用方 → 被使用方 两者生命周期独立,被使用方可被多个使用方共享
聚合 Aggregation 空心菱形 + 实线 ◇───── 部分 → 整体 部分可独立于整体存在(整体销毁,部分仍可复用)
组合 Composition 实心菱形 + 实线 ◆───── 部分 → 整体 部分随整体同生共死(整体销毁,部分也随之销毁)
依赖 Dependency 普通箭头 + 虚线 - - - ▶ 依赖方 → 被依赖方 临时关系,仅在方法调用期间存在

快速记忆口诀

三角父子实线继,虚线接口得实现。
菱形零件空心聚,实心组合共生死。
实线关联长期友,虚线依赖用完走

理解

只有普通箭头和空心箭头,并没有实心箭头。

箭头方向使用者到被使用者,所以是子类 --> 父类(基类),实例化函数 --> 模板函数,实现类到接口,实现层:算子策略--> 算子(策略实现需要读取算子参数、结构),抽象层:算子-->策略(算子可选用策略,策略实现不依靠算子信息)

虚线的依赖是临时的,比如绑定,call, 创建,use

绑定:外部注入,可替换,因此不是长期的

绑定 VS 实例化:Bind是静态的,实例化是运行时的

模版只能是继承,因为不可能定义虚函数

UML 聚合 (Aggregation) 面向对象设计 整体-部分关系,部分可脱离整体(空心菱形)

C 语言的"聚合数据类型" C 语言标准 指 struct、union、array(把多个数据组合成复合类型)

==> 在 UML 层面 :结构体(struct)和联合体(union)都可能表现为组合 ,也可能表现为聚合

1. 继承(Generalization):有复用、扩展父类代码

  • 关系:子类 → 父类
  • 图标:空心三角 + 实线
  • 场景:
    • 普通类继承:class B : public A
    • 模板类继承:template<class T> class B : public A<T>

2. 实现(Realization):不复用父类代码

  • 关系:类 → 接口 / 纯抽象类
  • 图标:空心三角 + 虚线
  • 场景:
    • 含有纯虚函数的抽象接口,子类完整实现所有接口方法

3. 某个类 / 函数 使用、调用、实例化 模板

属于:依赖(Dependency)

  • 线条:普通箭头 + 虚线
  • 场景:仅是简单的使用,这里的模版和普通对象没有区别
  • 简单的使用了模版类 void func() { vector<int> a; }

时序图的两个核心维度

维度 表现形式 含义
时间轴 从上到下 时间递增,越往下时间越晚
箭头 ->> / -->> 消息传递(调用或返回)
方框 activate / deactivate 正在执行(占用执行资源)
环形箭头 A->>A: 自调用
相关推荐
今儿敲了吗2 天前
面向对象(二)——UML基础
笔记·uml
程序猿多布5 天前
UML 类图
uml
Wyc724096 天前
UML建模
uml·个人学习
rolt7 天前
[答疑]把缺省伪状态和历史伪状态合并可行吗
软件工程·架构师·uml
程序猿多布7 天前
UML 关系详解
uml
疯狂打码的少年14 天前
UML类图究竟是什么?—— 软件开发中的“建筑蓝图”
uml
rolt14 天前
[幻灯片]分析设计高阶-02结构(2)-202604更新
ddd·架构师·uml·ooad
a里啊里啊17 天前
软考-软件评测师:知识点整理(七)——软件工程
设计模式·软件工程·软考·uml·结构化开发·软件评测师·软件模型
Warren2Lynch18 天前
[特殊字符]️ 综合指南:结合使用 C4 模型与 UML
uml·c4
Ting.~18 天前
软件设计师备考笔记【day2】-UML 图解 | 面向对象 | 设计模式
笔记·设计模式·uml