编程设计之三 -- 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: 自调用
相关推荐
choke2337 小时前
深度分析系统建模:从UML基础到类图和对象图的实际应用
大数据·软件工程·uml
黄昏回响2 天前
UML与SysML深度解析:从软件工程到系统工程的建模语言进化之路
程序人生·软件工程·uml·改行学it
雪碧聊技术3 天前
UML相关知识点精讲
uml
Warren2Lynch4 天前
Visual Paradigm UML 平台 6 个月深度使用的真实评测
uml
Jump 不二7 天前
AI 绘图 Skill|Markdown 一键出架构图、UML、数据可视化
人工智能·信息可视化·语言模型·uml
Rsun045519 天前
Java UML类图从入门到实战
uml
m0_4889130110 天前
万字长文带你梳理Llama开源家族:从Llama-1到Llama-3,看这一篇就够了!
人工智能·学习·机器学习·大模型·产品经理·llama·uml
Warren2Lynch11 天前
无缝知识发布:开发者指南——将 Visual Paradigm OpenDocs 与企业 WordPress 集成
人工智能·架构·uml
Warren2Lynch13 天前
AI 驱动的 UML 图表支持全景指南
人工智能·架构·uml