软件设计师:11-结构化开发与UML

结构化开发(3-4分)

一、模块化


二、耦合(背)





三、内聚(背)







四、设计原则(背)





五、系统文档


六、数据流图

数据流的起点或终点必须有一个是加工








判断依据:

1、数据流的两端必须有一个是加工

2、加工最少要有一个输入数据流和一个输出数据流

3、数据流名称在上午题中不能重名




七、数据字典(外部实体不在数据字典中)






八、杂题



















UML(3-4分)

一、UML概念

二、UML事物


三、关系(依关泛实)



3.1、依赖关系

3.2、实现关系

实现可以理解为实现接口

3.3、泛化关系

父类泛化子类 泛化可以理解为继承类

例如:动物 泛化出猫和狗 人可以泛化出学生和教师等

3.4、关联关系(侧重"拥有"关系,依赖侧重于"使用"关系)

一条直线指向一个实心的菱形,那就是组合关系,整体消失了,部分也不存在

聚集:聚合、组合组成
聚合 :部分和整体的生命周期不一致,整体消失了,部分仍然存在,部分可以脱离整体存在

(例如1:学生(部分)班级(整体) 班级为202班,如果这个班的学生毕业了,学生是不会消失的,但是这个班级不会消失

例如2:员工和公司,公司破产了不存在了,但是员工是不会消失的,会找另外一家公司入职)
组合 :部分和整体的生命周期一致,整体消失,部分也消失,部分不能脱离整体存在

(例如1:大脑(部分)人(整体)如果人不存在了,那么他的大脑也不存在 例如2:翅膀和鸟,如果鸟不存在,翅膀也不存在)

单向关联:一条有方向的实线 鱼依赖于水,但是水不依赖鱼,人依赖氧气,氧气不依赖人(一直都是强关联)

关联名:鱼"需要"(需要就是关联名)水

关联类:多对多关系无法标识唯一记录的时候,就增加一个关联类,关联起来,比如学生(借阅)图书 ,加上借阅时间就可以唯一标识一条记录(所以借阅时间就是关联类)

3.5、真题










四、关联多重度

单向关联跟依赖差不多,不过单向关联的依赖性更强一点

类A的一个实例可以对应多少个类B的实例

单向关联:一条有方向的实线 鱼依赖于水,但是水不依赖鱼,人依赖氧气,氧气不依赖人(一直都是强关联)

关联名:鱼"需要"(需要就是关联名)水

关联类:多对多关系无法标识唯一记录的时候,就增加一个关联类,关联起来,比如学生(借阅)图书 ,加上借阅时间就可以唯一标识一条记录(所以借阅时间就是关联类)



UML图

一、类图












二、对象图


三、用例图


3.1、包含关系(用例和用例之间的关系)

一个用例包含另一个用例 虚线的一个箭头---------->

指向分解出来的用例
把一个复杂的步骤分解为较小的步骤

比如说参与者是图书管理员,用例是(删除图书)和(修改图书)的时候必须得先(查询图书)

A就是删除或修改图书 B就是查询图书 A包含B

3.2、扩展关系(指向基础用例 用例和用例之间的关系)

用一个用例(可选)扩展另一个用例(基本例)的功能,将一些常规的动作放在一个基本用例中,将可选的或只在特定条件下才执行的动作放在它的扩展用例中。表示符号:<>

一个用例执行的时候可能会发生一些特殊情况(比如:正常去食堂吃饭,饭卡余额充足的时候直接刷卡扣余额,但是当余额不足的时候就无法吃饭,得去充值后才能正常就餐),这个特殊情况就是扩展关系。或者存在可选情况(比如去买苹果,如下图)

3.3、泛化关系(指向父用例)

继承关系,子用例有特别功能

3.4、真题


四、交互图


4.1、序列图(顺序图)





参考学习序列图

指向Account类对象的箭头才是Account的方法,而不是指出去的箭头

这里上面的小人和圆圈都是指的对象,我一开始以为圆圈是用例,序列图是对一个用例进行详细的过程分解,所以是一个用例多个对象

4.2、通信图(协作图)








五、状态图



5.1、状态

对象的状态是指在这个对象的生命期中的一个条件或状况,在此期间对象将满足某些条件、执行某些活动,或等待某些事件

5.1.1 状态图中的事务及解释
5.1.2 状态的可选活动表
5.1.3 状态图举例

对象的状态图

网上银行登录系统

5.2、事件

5.3、真题







迁移由事件触发

六、活动图








七、构件图(组件图)






八、部署图



九、UML图总结





十、图展示

类图

对象图

用例图

序列图

通信图

状态图

活动图

构件图

部署图

包图

十一、杂题





相关推荐
engchina9 分钟前
Python PDF处理库深度对比:PyMuPDF、pypdfium2、pdfplumber、pdfminer的关系与区别
开发语言·python·pdf
拓端研究室11 分钟前
专题:2025供应链数智化与效率提升报告|附100+份报告PDF、原数据表汇总下载
开发语言·php
一百天成为python专家34 分钟前
python库之jieba 库
开发语言·人工智能·python·深度学习·机器学习·pycharm·python3.11
伊成44 分钟前
docker安装Consul笔记
笔记·docker·consul
Go Dgg1 小时前
【Go + Gin 实现「双 Token」管理员登录】
开发语言·golang·gin
zstar-_1 小时前
Claude code在Windows上的配置流程
笔记·算法·leetcode
十五年专注C++开发1 小时前
hiredis: 一个轻量级、高性能的 C 语言 Redis 客户端库
开发语言·数据库·c++·redis·缓存
WJ.Polar1 小时前
Python数据容器-集合set
开发语言·python
晓13131 小时前
JavaScript加强篇——第七章 浏览器对象与存储要点
开发语言·javascript·ecmascript
nbsaas-boot2 小时前
Go语言生态成熟度分析:为何Go还无法像Java那样实现注解式框架?
java·开发语言·golang