10.4.9 构件图
构件图描述软件系统的实现结构:系统由哪些构件组成,构件提供哪些接口、需要哪些接口,构件之间如何依赖。
课程里提醒:构件可以理解为比类更大的软件单元。类是较细粒度的设计元素,构件更接近模块、库、服务、可部署单元。
构件图表达什么
| 关注点 | 说明 |
|---|---|
| 构件 | 系统中相对独立、可替换、可部署的软件组成部分 |
| 接口 | 构件向外提供或向外要求的服务边界 |
| 依赖 | 构件之间的使用关系 |
| 静态实现结构 | 系统实现层面的组成和连接方式 |
构件图不是业务流程图,也不是物理部署图。它回答的是:“软件由哪些可组装部件构成,这些部件之间怎样协作?”
构件的两种画法
课程提到两种常见标记:
| 画法 | 特点 | 识图方式 |
|---|---|---|
| 大图标画法 | 构件主体外带两个小矩形标识 | 看到矩形旁的小构件标记 |
| 小图标画法 | 在矩形内部标注构件图标 | 看到矩形角落或内部的构件符号 |
考试多数不要求你画得很标准,但要求你看到构件标记能认出“这是构件图/组件图”。
供接口与需接口
构件之间通过接口连接。接口常分为供接口和需接口。
| 接口 | 含义 | 图形记忆 | 语义 |
|---|---|---|---|
| 供接口 | 构件对外提供的服务 | 凸出的圆形接口 | “我能提供这个能力” |
| 需接口 | 构件需要别人提供的服务 | 凹入的半圆接口 | “我需要这个能力” |
可以把供接口想成“钥匙”,需接口想成“锁孔”:钥匙提供能力,锁孔需要能力。
mermaid
flowchart LR
Order["订单构件"]
Pay["支付构件"]
Stock["库存构件"]
Order -- "需接口: 支付服务" --> Pay
Order -- "需接口: 库存服务" --> Stock真实 UML 图里供接口和需接口会用棒棒糖/插口符号表示,文本笔记中重点掌握它们的语义:谁提供,谁需要。
构件图与类图、部署图的区别
| 对比项 | 类图 | 构件图 | 部署图 |
|---|---|---|---|
| 粒度 | 类、接口、属性、方法 | 构件、接口、依赖 | 节点、构件、通信路径 |
| 关注层次 | 逻辑设计结构 | 软件实现组成 | 物理部署结构 |
| 关键词 | 类、属性、方法、继承 | 构件、供接口、需接口、依赖 | 服务器、PC、节点、TCP/IP |
| 是否涉及硬件 | 不强调 | 不强调 | 强调 |
真题常把“构件之间的组织和依赖关系”作为构件图定义;把“面向对象系统的物理模型”作为部署图定义。
考试识图提示
- 看到构件小图标、供接口、需接口,判断构件图。
- “组件图”和“构件图”通常是翻译差异,可视为同一类考点。
- 看到节点、服务器、PC、物理部署,不要选构件图,要选部署图。
- 看到“一组对象、接口、协作及其关系”,是类图。
例题
描述软件构件及其接口依赖关系,适合使用:
用于展示组件之间的组织和依赖关系的 UML 图是:
自查要点
- 为什么说构件通常比类粒度更大?
- 供接口和需接口分别表示什么?
- 构件图和部署图为什么容易混淆?
- 真题中看到“组件之间的组织和依赖关系”应选什么图?