要点:
- UML画图 40% ZJH:
- 用例图:
- 命名规范
- 用例之间的关系(include、extend,没有把握的时候不标出来)
- 椭圆
- 类图:
- 属性、方法 5 个以上
- 可见性要表达出来(- +)
- 继承关系中,子类无需再重复写继承的字段
- 框框规范,分三层
- 最好写英文,可以全部都缩写
- 关联关系的数量可以不标出来(虚线)
- 整体部分关系,用聚合就行了
- 活动图:
- 5 个活动以上
- 画主要的(登录之类的就算了)
- 状态图:
- 状态实体只需要写状态名,内部不需要内容
- 状态实体圆角矩形
- 时序图:
- 返回可以不用画
- 用例图:
UML
Unified Modeling Language,统一建模语言。
用例图
好多概念,用例,用例实例,文字描述序列,不想管= =
只讲画用例图的要点。
基本认识
基本规范要求
- 命名格式:使用主动语句:主语 + 宾语。
- 命名用词:慎用弱动词弱名词。因为会掩盖真正的业务。
- 有意义的目标:
- 从用户的角度描述:站在执行者的角度。用例图的执行者是用户,所以也可以说站在用户的角度。用例图展示的是用户使用系统。
用例之间的关系
包含和扩展的区别
包含关系是执行基本用例时,必须执行其中一个子用例。
扩展关系是执行基本用例时,扩展用例可择的,可执行也可不执行。
用例文档描述
要求:
- 说人话。
- 使用主动语句,执行者为主语。
- 是一个交互过程。
- 每一句都要朝目标迈进,避免琐碎步骤的描述。
- 连贯地描述主要事件流,循环跟着描述出来,分支放在扩展路径。
- 不涉及界面细节。
例子:
ATM取款案例1
Use Case:取款
Actor:储户
主事件流:
1、储户插入ATM卡,并键入密码;
2、储户按“取款”按钮,并键入取款数目;
3、储户取走现金、ATM卡并拿走收据;
4、储户离开。
问题:只描述了参与者的动作序列,而没有描述系统的行为。
修改后:
主事件流:
1、通过读卡机,储户插入ATM卡;
2、ATM系统从卡上读取银行ID、帐号、加密密码、并用主银行系统验证银行ID和帐号;
3、储户输入密码,ATM系统根据上面读出的卡上加密密码,对密码进行验证;
4、储户按“快速取款”按钮,并键入取款数量,取款数量应该是100的倍数;
5、ATM系统通知主银行系统,传递储户帐号和取款数量,并接收返回的确认信息和储户帐户余额;
6、ATM系统输出现金、ATM卡和显示帐户余额的收据;
7、ATM系统记录事务到日志文件;
类图
画过都知道,不说了= =
类与类之间有 5 种关系。
- 关联。
- 组合。
- 聚合。
- 继承。
- 实现。
时序图
时序图也叫顺序图,它显示对象之间的交互,这些对象是按时间顺序排列的,重点描述对象之间传递消息的时间顺序。
两个维度:垂直线代表生命线,水平线代表时间线。
**1.findClient() 表示 Clerk 调用 :CheckoutMgr 中的方法!!!活动图
活动图是特殊的状态图,描述系统的工作流程和并发行为。
普通活动图
普通活动图一般有起始状态,活动,分支,分叉与汇合,结束状态。
- 只能有一个起始状态,可以有多个结束状态。
- 分支和分叉的区别:分支是有条件的,可以有多个分支,但是每次只能走其中一个分支。分叉是无条件的,可以有多个分叉,但是每次都会走所有分叉(并发执行),并在汇合点汇合。
- 分叉情形:
泳道图
状态图
状态图描述对象在事件的驱动下,发生的状态变化。
状态图描述一个对象在其生命期内响应事件所经历的状态序列,以及对这些事件所做出的反应。
事件
事件分为 4 大类,调用事件,变化事件,事件事件和信号事件。
1、调用事件
格式:eventName(arg1, arg2)
Manual 状态下调用 startAutopilot(normal) 转换为 Automatic 状态。
2、变化事件
格式:when(条件)/action
当温度超过 120 就调用 alarm() 发出警报。
3、时间事件
格式:
- when(时间条件)/action
- after(时间条件)/action
4、信号事件
与调用事件相似,表示格式一样,区别在于信号事件是异步事件,调用事件一般是同步事件。
状态
保留关键字:entry/进入动作、exit/退出动作、do/活动(活动不中断,活动序列会中断)