UML学习笔记
- 系统的创建步骤: 分析、设计与实现比例
- 在分析阶段,需向行业专家请教,需要问问自己,谁是系统的最终用户
- UML(统一建模语言)是一种系统建模方法,有两个主要构件 -- 结构图和行为图
- 工具:StarUML
一、用例图
1、说明
<业务需求>
1.2 解析一个用例图,我们可以发现它包含4个基本组件:
- 系统
- 参与者
- 用例(功能)
- 关系
多个参与者与用例之间有同一关系,可以重新考虑为用户选择的在系统中扮演的角色的名称。使名称更为广泛化,以一个参与者取代重复的参与者。
2、包含用例图
虚线和箭头连接,起始处为包含用例,终止处为被包含用例。包含关系用于表示用例为执行其功能从其他用例引入功能。( 重用某些功能)
教师必须记录成绩,更新成绩。这两个用例都从一个用例包含了一项为save grades的公用功能,成绩总会被保存。
3、 扩展关系(继承)
表示用例可以通过其他用例得到扩展
Notify guardians 用例是添加到save grades 功能中的一项功能。
与包含关系相比,用例必须包含被包含用例,而扩展关系则有是否使用被扩展功能的选择权。
4、创建用例图步骤
找出系统中的参与者和用例
区分用例的优先次序
细分每个用例(描述)
建立用例模型结构
建立用户界面的原型
PS: 软件开发过程
泛化
二、活动图
用于面向对象的系统的不同组件之间建模工作流
1、作用
- 进一步规划用例
- 标识用例的前后条件
- 发现新用例
2、组件:
- 活动,指示动作
- 状态,指示系统当前状态 (在StarUML里面,状态和活动是同一个标识,其实状态图应该是一个矩形四个角为小圆弧)
- 转意,显示从一种状态到另一种状态的控制流
实心黑点表示,结束状态以 带有圆圈的实心黑点表示。
- 控制点,用来允许控制流仅沿着满足预置条件的方向
- 决策点,对控制流继续的方向做出决策
- 事件和触发器,强制控制流从一个活动到另一个活动的活动(类似JAVA中的方法)
- (强烈推荐在模型中涉及多个对象事使用游泳道)
- 分岔联络
三、 顺序图
由于StarUML对顺序图的支持不是很好,本节最好贴上笔抄
1、组件:
- 活动对象,可以是系统的参与者或者任何有效的系统对象
- 消息, 用来说明顺序图中不同活动对象之间的通信
消息可以包含条件一边限制他们只在满足条件对才能发送
消息包含四种类型:
同步 : 指示在消息完成之前,工作流被中断
返回 : 显示控制流返回到调用的活动对象
异步 : 用于被返回的消息,活动对象不等待来自该消息的响应
简单 : 在同步和异步之间没有区别
即时创建对象 :
2、创建顺序图4项任务:
- 确定需要建模的工作流
- 从左到右布置对象
- 添加消息和条件以便创建每一个工作流
- 绘制总图以便连接各个分图
3、附图(笔抄):
四、 类图
1、作用:
- 为了更加详细地展示产品
- 提供指示完成有效功能的路径地图所需的信息
2、组件
- 类的标记符
- 关系
- 多重性,一个类的多少对象与另一个类的一个对象相关
上例描述了一个Teacher教授1到无限多个班级,一个Student属于4-6个班级,一个Class有10-30个学生
1,3..*(除2之外的自然数); 2,4,6,8,10(大于0小于等于10的偶数)
- 角色,在类图中使用角色可以帮助读者理解第一个类对于第二个类的作用,角色与多重性显示在相同的位置
- 对象的标识符
对象的特性值显示在特性名之后,中间用等于号连接
- 包, 一种把类分组为通用类目的方式
Developer属于Development包
- 数据类型
3、步骤
创建类图两个反复步骤就是
- 确定类及其关联
- 确定特性和操作
五、 协作图
1、对象实例的3种标记符
- 未指示类的实例
- 完全限定对象,包含对象名和实例名
- 对象实例未命名,带有类名的实例
2、协作图中对象实例角色的4种标记符
- 不带对象名的角色名
- 不带对象名,带角色名和类名
- 带有对象名和角色名
- 完全限定
3、类角色的3种标记符
- 不带类名的角色名
- 带角色名和类名
- 不带角色名的类名
4、链接
“parameter”固化类型指示一个对象是另一个对象的参数,而"local"固化类型指定一个对象在其他对象中具有局部作用域
5、消息
6、序列化消息
7、迭代
对于每一个ObjectB, Message都会从ObjectA发送到对应的ObjectB
Message被从ObjectA到ObjectB 发送了5次
8、如何建立协作图
- 确定属于协作图的元素
- 建模这些元素之间的结构化关系
- 建模实例层的协作图