vault backup: 2026-06-11 00:02:06
This commit is contained in:
@@ -185,16 +185,241 @@
|
||||
|
||||
这是MVC模式的UML体现,期中考试经常考!
|
||||
|
||||
| 版型 | 职责 | 常见形式 | 对应MVC |
|
||||
|------|------|----------|---------|
|
||||
| **边界类** <<boundary>> | 与外界交互 | 窗口、对话框、报表 | View |
|
||||
| **控制类** <<control>> | 协调业务逻辑 | 处理业务规则 | Controller |
|
||||
| **实体类** <<entity>> | 持久化数据 | 数据库表对应的类 | Model |
|
||||
| 版型 | 职责 | 常见形式 | 对应MVC |
|
||||
| ---------------------- | ------ | --------- | ---------- |
|
||||
| **边界类** `<<boundary>>` | 与外界交互 | 窗口、对话框、报表 | View |
|
||||
| **控制类** `<<control>>` | 协调业务逻辑 | 处理业务规则 | Controller |
|
||||
| **实体类** `<<entity>>` | 持久化数据 | 数据库表对应的类 | Model |
|
||||
|
||||
🔑 **协作关系**:边界类接收用户输入 → 控制类处理业务逻辑 → 实体类存取数据。
|
||||
|
||||
---
|
||||
|
||||
## 📌 附录:类图常用画图符号速查
|
||||
|
||||
> 这一节把类图中所有的关系符号、接口、抽象类、版型、对象图等所有画图元素用字符画列出来,画类图时直接照搬即可。
|
||||
|
||||
### 1. 关联关系(Association)—— 实线(可带多重性)
|
||||
|
||||
**普通关联**(双向带多重性):
|
||||
|
||||
```
|
||||
┌────────┐ 1 0..* ┌────────┐
|
||||
│ 老师 │ ────────────────── │ 学生 │
|
||||
└────────┘ └────────┘
|
||||
```
|
||||
|
||||
**自关联**(一个类关联到自己):
|
||||
|
||||
```
|
||||
┌────────┐
|
||||
│ 员工 │
|
||||
│ │
|
||||
│ 领导 │◀──┐
|
||||
└────────┘ │
|
||||
│ │
|
||||
└─────┘
|
||||
```
|
||||
|
||||
### 2. 聚合关系(Aggregation)—— 实线 + 空心菱形 ◇
|
||||
|
||||
> 部分可脱离整体独立存在。
|
||||
|
||||
```
|
||||
◇
|
||||
┌────────┐ ┌────────┐
|
||||
│ 班级 │ ───────────── │ 学生 │
|
||||
└────────┘ └────────┘
|
||||
(整体) (部分,可独立)
|
||||
|
||||
💬 学校没了,学生还在 —— 所以是空心菱形
|
||||
```
|
||||
|
||||
### 3. 组合关系(Composition)—— 实线 + 实心菱形 ◆
|
||||
|
||||
> 部分不能脱离整体独立存在。
|
||||
|
||||
```
|
||||
◆
|
||||
┌────────┐ ┌────────┐
|
||||
│ 汽车 │ ───────────── │ 发动机 │
|
||||
└────────┘ └────────┘
|
||||
(整体) (部分,离不开整体)
|
||||
|
||||
💬 汽车报废了,发动机也没意义了 —— 所以是实心菱形
|
||||
```
|
||||
|
||||
### 4. 依赖关系(Dependency)—— 虚线 + 开放箭头
|
||||
|
||||
```
|
||||
┌────────┐ ┌────────┐
|
||||
│ 司机 │ ─ ─ ─ ─ ─ ─ ─⇨ │ 汽车 │
|
||||
└────────┘ └────────┘
|
||||
(使用者) (被使用者)
|
||||
(虚线 + 开放箭头)
|
||||
```
|
||||
|
||||
### 5. 泛化关系(Generalization)—— 实线 + 空心三角
|
||||
|
||||
**方向**:子类 → 父类(空心三角指向父类)。
|
||||
|
||||
```
|
||||
▷
|
||||
┌────────┐ ┌────────┐
|
||||
│ 狗 │ ───────────── │ 动物 │
|
||||
└────────┘ └────────┘
|
||||
(子类) (父类)
|
||||
```
|
||||
|
||||
### 6. 实现关系(Realization)—— 虚线 + 空心三角
|
||||
|
||||
**方向**:实现类 → 接口(空心三角指向接口)。
|
||||
|
||||
```
|
||||
▷
|
||||
┌────────┐ ┌──────────────┐
|
||||
│ 鸟 │ ─ ─ ─ ─ ─ ─ ─ │<<interface>>│
|
||||
└────────┘ │ 飞行 │
|
||||
(实现类) └──────────────┘
|
||||
(接口)
|
||||
```
|
||||
|
||||
### 7. 接口的两种画法
|
||||
|
||||
**普通矩形画法**(在类图中更常见):
|
||||
|
||||
```
|
||||
┌──────────────────┐
|
||||
│ <<interface>> │ ← 关键字标识
|
||||
│ 飞行 │ ← 接口名
|
||||
├──────────────────┤
|
||||
│ +起飞(): void │ ← 只有声明,没有实现
|
||||
│ +降落(): void │
|
||||
└──────────────────┘
|
||||
```
|
||||
|
||||
**棒棒糖表示法**(简化版,常在组件图中使用):
|
||||
|
||||
```
|
||||
┌────────┐ ┌────────┐
|
||||
│ 鸟 │●─ ─ ─ ─ ─ ─ ─ ─ ─ ┤ 飞行 │ (棒棒糖+连接线)
|
||||
└────────┘ └────────┘
|
||||
(实现类) (接口)
|
||||
```
|
||||
|
||||
### 8. 抽象类与抽象方法
|
||||
|
||||
> **画法**:抽象类**类名用斜体**、抽象方法**方法名用斜体**。在字符画里用 `<<abstract>>` 标识或加文字说明。
|
||||
|
||||
```
|
||||
┌────────────┐
|
||||
│ 动物 │ ← 实际画图时类名用斜体
|
||||
├────────────┤
|
||||
│ │
|
||||
├────────────┤
|
||||
│ 移动() │ ← 实际画图时方法名用斜体
|
||||
│ 叫() │
|
||||
└────────────┘
|
||||
|
||||
{abstract} ← 标注方式(实际画图用斜体)
|
||||
```
|
||||
|
||||
### 9. 版型(Stereotype)的画法
|
||||
|
||||
**边界类**:
|
||||
|
||||
```
|
||||
┌────────────────┐
|
||||
│ <<boundary>> │ ← 写在类名上方
|
||||
│ 登录页面 │
|
||||
├────────────────┤
|
||||
│ -用户名:String │
|
||||
│ -密码:String │
|
||||
├────────────────┤
|
||||
│ +提交():void │
|
||||
└────────────────┘
|
||||
```
|
||||
|
||||
**控制类**:
|
||||
|
||||
```
|
||||
┌────────────────┐
|
||||
│ <<control>> │
|
||||
│ 订单处理 │
|
||||
├────────────────┤
|
||||
│ │
|
||||
├────────────────┤
|
||||
│ +处理订单() │
|
||||
│ +检查库存() │
|
||||
└────────────────┘
|
||||
```
|
||||
|
||||
**实体类**:
|
||||
|
||||
```
|
||||
┌────────────────┐
|
||||
│ <<entity>> │
|
||||
│ 订单 │
|
||||
├────────────────┤
|
||||
│ -订单号:String│
|
||||
│ -金额:double │
|
||||
├────────────────┤
|
||||
│ +保存() │
|
||||
│ +查询() │
|
||||
└────────────────┘
|
||||
```
|
||||
|
||||
### 10. 对象图的画法
|
||||
|
||||
> 对象名格式:`对象名:类名`(对象名和类名下加**下划线**),属性有具体值。
|
||||
|
||||
```
|
||||
┌─────────────────┐
|
||||
│ 张三:员工 │ ← 对象名:类名,下划线
|
||||
├─────────────────┤
|
||||
│ 员工号 = "E001" │ ← 属性=值
|
||||
│ 姓名 = "张三" │
|
||||
│ 年龄 = 28 │
|
||||
└─────────────────┘
|
||||
```
|
||||
|
||||
**对象图与类图对比**:
|
||||
|
||||
```
|
||||
类图(描述规则) 对象图(描述实例)
|
||||
|
||||
┌──────────┐ ┌────────────────┐
|
||||
│ 员工 │ │ 张三:员工 │
|
||||
├──────────┤ ├────────────────┤
|
||||
│ -员工号 │ │ 员工号="E001" │
|
||||
│ -姓名 │ ──> │ 姓名="张三" │
|
||||
│ -年龄 │ │ 年龄=28 │
|
||||
├──────────┤ └────────────────┘
|
||||
│ +查询() │
|
||||
└──────────┘
|
||||
```
|
||||
|
||||
### 11. 关联类的画法
|
||||
|
||||
> 关联类挂在关联线中间,用虚线连到关联线上。
|
||||
|
||||
```
|
||||
┌────────┐ ┌────────┐
|
||||
│ 员工 │ ─ ─ ─ ─ ─ ─ ─ │ 公司 │
|
||||
└────────┘ │ └────────┘
|
||||
│
|
||||
┌────────┐
|
||||
│ 合同 │ ← 关联类(虚线连到关联线上)
|
||||
├────────┤
|
||||
│ -工资 │
|
||||
│ -合同期│
|
||||
└────────┘
|
||||
```
|
||||
|
||||
🔑 **一句话记忆口诀**:实线实箭是关联,空心菱形是聚合,实心菱形是组合,虚线开放箭头是依赖;实线空三角是泛化(继承),虚线空三角是实现(接口)。
|
||||
|
||||
---
|
||||
|
||||
## ✍️ 边学边练(三)
|
||||
|
||||
**题目**:在线购物系统中,"用户"通过"购物页面"下单,系统"订单处理"模块检查库存后,更新"订单"数据和"库存"数据。请指出各属于哪种版型。
|
||||
@@ -225,9 +450,9 @@
|
||||
## 📝 章末自测
|
||||
|
||||
**1. 填空题**
|
||||
- 聚合关系中,整体不存在了,部分( ___ )( ___ )存在。(能/不能)
|
||||
- 组合关系中,整体不存在了,部分( ___ )( ___ )存在。(能/不能)
|
||||
- 边界类、控制类、实体类分别对应MVC中的( ___ )( ___ )、( ___ )( ___ )、( ___ )( ___ )
|
||||
- 聚合关系中,整体不存在了,部分( ___ )存在。(能/不能)
|
||||
- 组合关系中,整体不存在了,部分( ___ )存在。(能/不能)
|
||||
- 边界类、控制类、实体类分别对应MVC中的( _____ )、( _____ )、( ___ )
|
||||
|
||||
**2. 判断题**
|
||||
- ( ) 依赖关系比关联关系更弱
|
||||
|
||||
Reference in New Issue
Block a user