-
Notifications
You must be signed in to change notification settings - Fork 32
/
8、面向对象方法学.md
576 lines (269 loc) · 21.2 KB
/
8、面向对象方法学.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
# 面向对象方法学
## 一、面向对象方法学
传统软件工程方法学适用于中小型软件产品开发;
面向对象软件工程方法学适用于大型软件产品开发。
面向对象方法学方程式:
OO = 对象 + 类 + 继承 + 传递消息实现通信
### 1.1 面向对象方法学概念
1. 对象:具有相同状态的一组操作的集合,对状态和操作的封装。
形象表示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021012716283858.png)
2. 类
对具有相同状态和相同操作的一组相似对象的定义。
类是一个抽象数据类型。
3. 实例
实例是由某个特定类所描述的一个具体对象。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127162936262.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
4. 消息
要求某对象执行某个操作的规格说明。
三部分:
- 接受消息的对象
- 消息名
- 0或多个变元
5. 方法和属性
- 方法:对象执行的操作,即类中定义的服务。
- 属性:类中所定义数据,对客观世界实体具体性质的抽象。
6. 继承
子类自动共享基类中定义的属性和方法的机制。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021012716295014.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
7. 多态性
在类等级不同层次可共享一个方法名,不同层次每个类按各自需要实现这个方法。
A是基类,B和C是A的派生类,多态函数Test参数是A的指针,Test函数可以引用A、B、C的对象
- 优点:
- 提高程序可复用性(接口设计的复用,不是代码实现的复用)
- 派生类的功能可被基类指针引用,提高程序可扩充性和可维护性。
8. 重载
1. 函数重载
在同一作用域内,参数特征不同的函数可使用相同的名字。
- 优点
调用者不需记住功能雷同函数名,方便用户;
程序易于阅读和理解。
2. 运算符重载
同一运算符可施加于不同类型操作数上面。
### 1.2 与传统方法学比较
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127163025749.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127163056692.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127163144839.png)
### 1.3 面向对象方法学优点
1. 与人类习惯思维方法一致
对象是对现实世界正确抽象,问题空间和解空间结构一致。
2. 稳定性好
软件系统结构根据问题领域模型建立,功能需求变化不会引起软件结构整体变化,作局部性修改。
如从已有类派生新子类实现功能扩充或修改。
3. 可重用性好
传统软件重用技术:标准函数库。
面向对象重用技术:类,派生类和创建类的实例
4. 易开发大型软件产品
封装性好,易于分解,易于合作开发。
5. 可维护性好
稳定性好、容易修改、容易理解、易于测试和调试。
## 二、UML简介
UML全称为Unified Modeling Language,目前最流行的面向对象建模语言。
### 2.1 建模必要性
“建模是捕获系统本质的过程”
- 捕获商业流程
- 促进沟通
- 管理复杂性
- 定义软件构架
- 促进软件复用
### 2.2 UML发展
UML全称为Unified Modeling Language
UML是图示化、说明、构造一个软件系统并生成其文档的标准语言。
UML独立于开发过程,可与大多数面向对象开发过程配合使用
UML独立于程序设计语言,可用C++、Java等任何一种面向对象程序语言实现。
### 2.3 UML构成
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127163233114.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127163300862.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
### 2.4 UML视图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127163320192.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
不同的视图突出特定的参与群体所关心的系统的不同方面,通过合并所有五个视图中得到的信息就可以形成系统的完整描述。
1. 用例视图
定义了系统的外部行为,是最终用户、分析人员和测试人员所关心。该视图定义了系统的需求,因此约束了描述系统设计和构造的某些方面的所有其他视图。
2. 设计视图
描述的是支持用例视图中规定的功能需求的逻辑结构。它由程序组件的定义,主要是类、类所包含的数据、类的行为以及类之间交互的说明组成。
3. 实现视图
描述构造系统的物理组件,这些组件包括如可执行文件、代码库和数据库等内容。这个视图中包含的信息与配置管理和系统集成这类活动有关。
4. 进程视图
进程视图包括形成并发和同步机制的进程和线程。
5. 部署视图
部署视图描述物理组件如何在系统运行的实际环境中分布。
## 三、UML静态建模——用例图
用例图描述外部执行者(actor)与系统的交互,表达系统功能,即系统提供服务。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127163504772.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127163517638.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127163529118.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
主要元素:**用例**和**执行者**。
用例:执行者与计算机一次典型交互,代表系统某一完整功能。
执行者:描述与系统交互的人或物,代表外部实体。
### 3.1 UML用例图案例
案例:建立一航空公司的机票预定系统,让客户通过电
话或网络买票、改变订票、取消订票、预定旅馆、租
车等等。
建立用例模型:
1. 发现执行者
- 谁使用该系统;
- 谁改变系统的数据;
- 谁从系统获取信息;
- 谁需要系统的支持以完成日常工作任务;
- 谁负责维护、管理并保持系统正常运行;
- 系统需要应付那些硬件设备;
- 系统需要和那些外部系统交互;
- 谁对系统运行产生的结果感兴趣。
<img src="https://img-blog.csdnimg.cn/20210127163558769.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70" width="45%"/>
2. 获取用例
向执行者提出问题获取用例:
- 执行者需获取何种功能,需要作什么;
- 执行者需读取、产生、删除、修改或存储系统中某种信息;
- 系统发生事件和执行者间是否需要通信。
用户观点非系统观点
<img src="https://img-blog.csdnimg.cn/20210127163643378.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70" width="45%"/>
<img src="https://img-blog.csdnimg.cn/20210127163710561.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70" width="45%"/>
<img src="https://img-blog.csdnimg.cn/20210127163728853.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70" width="45%"/>
3. 执行者间关联
泛化关系
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127163825140.png)
4. 用例间关系
**泛化关系:**
一般关系与特殊关系
<img src="https://img-blog.csdnimg.cn/20210127163857915.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70" width="35%"/>
有父用例的行为,可出现在父用例出现的任何地方。添加自己行为。
**扩展关系:**
允许一个用例扩展另一用例提供的功能,与泛化关联类似,有更多规则限制:
基本UseCase必须声明若干“扩展点”,扩展UseCase只能在扩展点上增加新行为。
<img src="https://img-blog.csdnimg.cn/20210127163913497.png" width="45%"/>
**包含关系:**
一个基本UseCase行为包含另一个UseCase行为。
<img src="https://img-blog.csdnimg.cn/20210127163926901.png" width="45%"/>
Check Credit检查输入的信用卡号是否有效,有足够资金。处理Purchase Ticket用例,总运行Check Credit用例。
<img src="https://img-blog.csdnimg.cn/20210127163949829.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70" width="45%"/>
## 四、状态转换图
### 4.1 UML状态转换图图形元素
表示一个对象生存史,显示触发状态转移的事件和因状态改变导致的动作
1. 状态
<img src="https://img-blog.csdnimg.cn/20210127164015145.png" width="45%"/>
活动:活动名/动作表达式
entry入口活动、exit出口活动、do内部执行活动
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127164027487.png)
组合状态:包含嵌套的子状态
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127164040234.png)
2. 状态转换
时间说明[ 守卫条件 ] / 动作表达式^发送子句
事件说明:事件名(参数表)
守卫条件:事件发生且守卫条件为真状态转换
动作表达式:状态转换开始,执行的表达式
发送子句:动作特例,在状态转换期间发送消息
<img src="https://img-blog.csdnimg.cn/20210127164101419.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70" width="45%"/>
3. 判定
工作流按保安条件取值发生分支。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127164117829.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
4. 历史状态
转移到组合状态的历史状态,对象恢复上次离开组合状态的最后一个子状态。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127164131773.png)
### 4.2 UML状态转换图示例
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127164157751.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
## 五、顺序图、协作图、活动图
### 5.1 消息
对象间交互通过消息。
1. 简单消息:没有描述通信的细节
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127164218135.png)
2. 同步消息:调用者发出消息后等待消息返回后再继续执行。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127164230788.png)
3. 异步消息:调用者发出消息后不等待消息返回就继续执行
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127164244339.png)
4. 返回消息:代表从过程调用的返回。
过程控制流:可省,隐含每个调用有配对返回。
非过程控制流(异步):不可省
### 5.2 顺序图(sequence diagram)
顺序图描述对象间交互关系。
对象用矩形表示,框内标对象名;
矩形框下的竖线代表对象的生命线;
对象生命线上的细长矩形框表示对象被激活;
对象间通信用对象间水平消息线表示,箭头形状表明消息类型(同步、异步或简单)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127164257434.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
### 5.3 协作图(Collaboration diagram)
协作图描述相互协作对象间交互关系和链接关系。
顺序图着重表现交互时间顺序;
协作图着重表现交互对象的静态链接消息;
协作图显示对象间处理过程的分布。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127164311342.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
### 5.4 活动图(Activity diagram)
活动图描述为完成某一个用例需要做的活动以及这些活动的执行顺序。
活动图由状态图变化而来,各自用于不同目的。状态图着重描述对象的状态变化以及触发状态变化的事件活动图着重描述各种活动的执行顺序。
业务活动流的分劈和接合用粗短线(同步杆)表示。
一入多出为分劈;
多入单出为接合。
<img src="https://img-blog.csdnimg.cn/20210127164326859.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70" width="35%"/>
泳道:对象对活动的责任。泳道把活动分成若干组,把组指定给对象,对象履行该组活动。
<img src="https://img-blog.csdnimg.cn/20210127164431535.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70" width="45%"/>
## 六、 UML物理框架机制
系统架构:逻辑架构;物理架构。
逻辑架构:描述系统功能。用例图、类图、对象图、状态图、活动图、协作图、顺序图。
物理架构:关系的是实现。类和对象物理上分布在那个程序或进程中;程序进程在哪台计算机上运行;系统有哪些硬件设备,如何连接。**构建图**和**配置图**。
### 6.1 构件图
构件图(Component Diagrams)展现了一组构件的类型、内部结构和它们之间的依赖关系。
构件代表系统一物理实现块,一般作为一独立文件存在。
构件种类:**部署构件** **工作产品构件** **执行构件**
- 部署构件
是构成一可执行系统必要构件,如操作系统,Java虚拟机。
- 工作产品构件
开发过程产物,包括源代码文件及数据文件。构件不直接参与可执行系统,用来产生可执行系统的中间工作产品。
- 执行构件
构件一可执行系统必要构件,动态链接库、exe文件、CORBA构件、.net构件等。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127164500384.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
### 6.2 配置图
配置图(Deployment diagram)描述了系统硬件和软件物理配置情况和系统体系结构,显示系统运行时刻的结构。
配置图包含结点和连接两个元素,配置图中的结点代表实际的物理设备以及在该设备上运行的构件和对象,结点的图符是一个立方体。
配置图各结点之间进行交互的通信路径称为连接,用结点间的连线表示。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127164513133.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
## 七、UML扩展机制
利用扩展机制,用户可定义使用自己的模型元素。
### 7.1 标签值
标签值是存储元素相关信息字符串,可附加在任何独立元素(图形元素、视图元素)。
标签是建模人员需要记录某些特性的名称;
值是给定特性的值。
标签值对项目管理特别有用,如元素创建日期、开发状态、完成日期和测试状态。
标签值用{}括起。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127164526620.png)
### 7.2 约束
约束是用文字表达式表达的语义限制,对声明全局的或影响大量元素的条件特别适用。
约束表示为括号中的表达式字符串,附加在类、对象、关系上和注释上等。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127164537557.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127164549889.png)
### 7.3 版类
版类(版型)在模型本身中定义的一种模型元素,UML元素具有通用语义,利用版类进行专有化和扩展,在已有元素上增加新语义。
版类用放置在基本模型元素符号中或附近的被《》括起
的文字串显示,还可为特殊版型创建图标,替换基本元素符号。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021012716460170.png)
## 八、UML实例
拟开发一软件,完成学校管理中的教务部分功能,包括班级管理、课程管理、账户管理等。
### 8.1 用例图设计
主用例图:
<img src="https://img-blog.csdnimg.cn/20210127164620545.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70" width="30%"/>
班级管理子用例图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127164649580.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
课程管理子用例图:
<img src="https://img-blog.csdnimg.cn/20210127164714977.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70" width="45%"/>
账户管理子用例图:
<img src="https://img-blog.csdnimg.cn/20210127164740144.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70" width="45%"/>
### 8.2 创建顺序图
账户管理顺序图:
<img src="https://img-blog.csdnimg.cn/20210127164806289.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70" width="45%"/>
账户管理协作图:
<img src="https://img-blog.csdnimg.cn/20210127164820971.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70" width="45%"/>
删除账户顺序图:
<img src="https://img-blog.csdnimg.cn/20210127164836117.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70" width="55%"/>
修改账户顺序图:
<img src="https://img-blog.csdnimg.cn/2021012716484837.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70" width="55%"/>
### 8.3 创建类图
账户管理类图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127164900116.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
课程管理类图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127164914908.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
班级管理类图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127164933503.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
### 8.4 生成核心代码
详细功能代码可在实现软件时再补充,也可实现由代码到类图的逆向工程。
### 8.5 建立数据模型
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127164947538.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)
数据模型转换为物理数据库:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210127165103286.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNDYwNw==,size_16,color_FFFFFF,t_70)