Files
obsidian/各章笔记/第07章-组件图与部署图.md

139 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第7章 组件图与部署图
> **考试重要度**:★★★
> **核心内容**:组件的概念与类型、组件与类的关系、正向工程与逆向工程、部署图与结点
---
## 📢 从盖房子理解物理模型
💬 前面学的用例图、类图、顺序图等是**逻辑模型**——描述"软件能干什么"和"软件怎么组织"。
组件图和部署图是**物理模型**——描述"软件代码文件怎么组织"和"软件部署在哪台机器上"。
```
逻辑模型:用例图 + 类图 + 顺序图 + 协作图 + 活动图 + 状态图
物理模型:包图 + 组件图 + 部署图
```
💬 **比喻**:逻辑模型是"建筑设计图"(几室几厅、什么风格),物理模型是"施工方案"(每间房用什么材料、电线怎么走)。
---
## 💡 一、组件的概念
> **定义**:组件 = 系统中可替换的物理部件,是一个实现性文件。
💬 **大白话**:组件就是"软插件"——像电脑的USB设备一样可以拔下来换一个。
### 组件的三种类型
| 类型 | 说明 | 举例 |
|------|------|------|
| **部署组件** | 运行时需要的组件 | DLL文件、JAR文件、数据库表、XML文件 |
| **工作产品组件** | 开发过程产生的组件 | 源代码文件(.java/.cpp)、数据文件 |
| **执行组件** | 运行后产生的组件 | EXE文件、动态网页、EJB |
---
## 💡 二、组件和类的关系
🔑 **这是本章最重要的理解!**
| 维度 | 类 | 组件 |
|------|-----|------|
| **性质** | 逻辑概念("虚" | 物理概念("实" |
| **存在形式** | 设计图上的符号 | 硬盘上的文件 |
| **包含关系** | 一个类只在一个组件中 | 一个组件可以包含多个类 |
| **例子** | `class BankAccount` | `BankAccount.java` 这个文件 |
💬 **简单说**:一个.java文件可以定义多个类这个.java文件就是**组件**里面的class定义就是**类**。
### 组件之间的关系
组件之间的关系 = 包含的类之间的关系的"投影"。
> 类A依赖于类B → 组件A依赖于组件B
---
## 💡 三、正向工程与逆向工程
| 工程方向 | 含义 | 过程 |
|----------|------|------|
| **正向工程** | 模型 → 代码 | 画好类图和组件图 → 工具自动生成代码框架 |
| **逆向工程** | 代码 → 模型 | 导入源代码 → 工具自动生成类图和组件图 |
💬 **正向工程**:先设计,再生成代码骨架。
💬 **逆向工程**:拿到别人写的代码,自动生成类图来理解结构。
---
## 💡 四、部署图
### 结点的概念
> **结点** = 运行时存在的、有计算能力的物理元素。
| 结点类型 | 说明 | 举例 |
|----------|------|------|
| **处理机结点** | 有计算能力的硬件 | PC机、服务器、打印机智能 |
| **设备结点** | 无计算能力的硬件 | 调制解调器、普通终端 |
### 部署图的作用
部署图显示:
1. 系统中有哪些**硬件结点**
2. 结点之间的**连接关系**(通信路径)
3. 每个结点上运行什么**组件**
💬 **一句话**:部署图 = "哪个软件组件跑在哪台机器上"。
---
## ✍️ 边学边练
**题目**某Web系统包括以下内容请区分逻辑模型和物理模型。
① 用户类(User)、订单类(Order)
② User.java、Order.java放在src/entity目录下
③ 用户登录要用到LoginAction.java
④ 整个系统部署在一台Web服务器和一台数据库服务器上
⑤ 用户→登录界面→输入信息→验证→跳转主页
**答案:**
-**逻辑模型(类图)**—— 描述有哪些类
-**物理模型(包图+组件图)**—— 描述文件放哪个目录
-**物理模型(组件图)**—— 描述组件之间的依赖
-**物理模型(部署图)**—— 描述硬件部署
-**逻辑模型(顺序图/活动图)**—— 描述交互流程
---
## 📝 章末自测
**1. 填空题**
- 组件的三种类型是:( ___ ___ )、( ___ ___ )、( ___ ___
- 正向工程是指从( ___ ___ )生成( ___ ___
- 部署图中的结点分两种:( ___ ___ )和( ___ ___
**2. 判断题**
- ( ) 一个组件只能包含一个类
- ( ) 组件图描述的是系统的物理结构
- ( ) 部署图中的连接表示硬件之间的通信路径
- ( ) 类图是物理模型,组件图是逻辑模型
**3. 简答题**
- 简述组件和类的关系。
**答案:**
**填空题**:部署组件、工作产品组件、执行组件;模型、代码;处理机结点、设备结点
**判断题**:❌(可包含多个) ✅ ✅ ❌(反过来)
**简答题**
- 类是逻辑概念,组件是物理概念。一个组件(如.java文件可以包含一个或多个类。组件是为了"软插件"理念——将类打包成可替换的物理单元。类之间的关系决定了组件之间的关系。
---
> 🔗 上一篇:[第6章 状态图与活动图](第06章-状态图与活动图.md) | 下一篇:[第8章 包图](第08章-包图.md)