UML学习笔记
- 系统的创建步骤: 分析、设计与实现比例
- 在分析阶段,需向行业专家请教,需要问问自己,谁是系统的最终用户
- UML(统一建模语言)是一种系统建模方法,有两个主要构件 -- 结构图和行为图
- 工具:StarUML
一、用例图
1、说明
1.1 用例图说明的事谁要使用系统以及他们使用该系统可以做些什么?
<业务需求>
1.2 解析一个用例图,我们可以发现它包含4个基本组件:
- 系统
- 参与者
- 用例(功能)
- 关系
另外可以通过在用例前面加上包名和两个冒号来确定该用例是属于哪个包的。如:staff::mechanic。如果用
多个参与者与用例之间有同一关系,可以重新考虑为用户选择的在系统中扮演的角色的名称。使名称更为广泛化,以一个参与者取代重复的参与者。
2、包含用例图
用
虚线和箭头连接,起始处为包含用例,终止处为被包含用例。包含关系用于表示用例为执行其功能从其他用例引入功能。(
重用某些功能)
教师必须记录成绩,更新成绩。这两个用例都从一个用例包含了一项为save grades的公用功能,成绩总会被保存。
3、 扩展关系(继承)
表示用例可以通过其他用例得到扩展
Notify guardians 用例是添加到save grades 功能中的一项功能。
与包含关系相比,用例必须包含被包含用例,而扩展关系则有是否使用被扩展功能的选择权。
4、创建用例图步骤
找出系统中的参与者和用例
区分用例的优先次序
细分每个用例(描述)
建立用例模型结构
建立用户界面的原型
PS: 软件开发过程
泛化
二、活动图
用于面向对象的系统的不同组件之间建模工作流
1、作用
- 进一步规划用例
- 标识用例的前后条件
- 发现新用例
2、组件:
- 活动,指示动作
- 状态,指示系统当前状态 (在StarUML里面,状态和活动是同一个标识,其实状态图应该是一个矩形四个角为小圆弧)
- 转意,显示从一种状态到另一种状态的控制流
UML描述了两个特殊状态,即开始状态和结束状态。开始状态以
实心黑点表示,结束状态以
带有圆圈的实心黑点表示。
- 控制点,用来允许控制流仅沿着满足预置条件的方向
- 决策点,对控制流继续的方向做出决策
- 事件和触发器,强制控制流从一个活动到另一个活动的活动(类似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、消息
- 同步:
- 异步:
- Flat:
6、序列化消息
7、迭代
对于每一个ObjectB, Message都会从ObjectA发送到对应的ObjectB
Message被从ObjectA到ObjectB 发送了5次
8、如何建立协作图
- 确定属于协作图的元素
- 建模这些元素之间的结构化关系
- 建模实例层的协作图