目录

  • 1. 活动图
    • 1.1 活动图的开始、结束、对象
    • 1.2 活动节点
    • 1.3 分支
    • 1.4 分岔和汇合( Forking and Joining)
    • 1.5 泳道(Swimlanes)
    • 1.6 活动图小结
  • 2. 类图
    • 2.1 类图定义
    • 2.2 类图中常用的UML元素
    • 2.3 UML中类的表示
    • 2.4 类元素的命名
    • 2.5 关联关系的修饰
    • 2.6 关联类 Association Class
  • 3. 顺序图
    • 3.1 相关概念
    • 3.2 交互的基本概念--消息
    • 3.3 基本建模元素
    • 3.4 顺序图小结
  • 4. 状态图
    • 4.1 状态图的概念
    • 4.2 状态组成
    • 4.3 事件 Event
    • 4.4 迁移Transition
    • 4.5 状态图的建模元素
    • 4.6 状态图建模注意事项
    • 4.7 小结

1. 活动图

活动图描述了在一个过程中, 顺序的/并行的活动及其之间的关系

  • 应用于商业过程、 工作流(业务过程) 、 复杂算法的建模

活动图是顶点和弧的集合

  • 活动节点
  • 动作
  • 对象值
  • 注解和约束等

1.1 活动图的开始、结束、对象

1.2 活动节点

  • 一个活动是一个过程中进行的非原子的执行单元
  • 活动的执行最终延伸为一些独立动作(Action,原子的)的执行

1.3 分支

  • 一个分支可以有一个进入流和多个离去流

  • 在每个离去流上必须设置一个监护条件

    • 条件放在方括号里

    • 条件不能重叠,以免二义性

      • 可以有 [else] 分支
  • 两个控制路径可以重新合并,无需监护条件

1.4 分岔和汇合( Forking and Joining)

  • 分岔表示把一个单独的控制流分成两个或多个并发的控制流
  • 汇合表示两个或多个并发控制流的同步发生, 一个汇合可以有两个或多个进入转移和一个输出转移
  • 在UML中, 用同步棒来说明并行控制流的分岔和汇合
    • 同步棒是一条水平或垂直的粗线条

1.5 泳道(Swimlanes)

  • 将一个活动图中的活动分组, 每一组表示一个特定的类别、 人或部门, 他们负责完成组内的活动
  • 每个组被称为一个泳道
    • 用一条垂直的实线把它们分开
  • 每个活动(不可再分割的)严格地属于一个泳道
    • 转移可以跨越泳道
  • 同步棒可以跨越泳道
  • 泳道是包的一种

1.6 活动图小结

  • 活动图与用例模型互为补充,主要用于需求分析阶段

  • 活动图中的基本要素包括

    活动(动作)、转移、分支、分叉和汇合、泳道、对象流等

2. 类图

2.1 类图定义

  • 类class的定义

    • 具有相同属性、 操作、 方法、 关系或者行为的一组对象的描述符
    • 类是真实世界事物的抽象
    • 问题领域的类: 在对系统建模时, 将会涉及到如何识别业务系统中的事物, 这些事物构成了整个业务系统。 在UML中, 把所有的这些事物都建模为类 (class)
  • 对象object的定义
    • 当这些事物存在于真实世界中时, 它们是类的实例, 并被称为对象
    • 同一个类的各对象具有
      • 相同的属性, 但属性的取值可以不同
      • 提供相同的操作、 有相同的语义

把类相关的元素画在一起, 即为类图

2.2 类图中常用的UML元素

2.3 UML中类的表示

类的图形表示:用四部分来表示,它是分为三个分隔区(compartment)的长方形

在显示时,只有名称部分是必须的,其余部分可以隐藏 (模型里面还是存在的!)

2.4 类元素的命名

  • 类的命名

    类名中的每个词的第一个字母通常要大写

    例如, Student、 Teacher、 Book、 Store etc.

  • 操作的命名

    操作名 除第一个词之外的每个词的第一个字母要大写

    例如, selectCourse();

  • 属性的命名

    属性名 除第一个单词之外的每个单词的第一个字母要大写

    例如, myAddress、 employeeID、 stdNumber

2.5 关联关系的修饰

  1. 名称及其方向

  2. 角色

    • 在关联的每一端,表明相连的类在该关联关系中的作用

  3. 多重性Multiplicity

    例子:

    • 公司刚好有7名员工

    • 一个人只能被一家公司雇佣

    • 一个银行账户只能有一个所有者

    • 一个银行账户可以有一个或多个操作员

      比如说你的银行卡,你可以用,你的老婆也可以用

    • 一个人可以有0到多个银行账户

    • 一个人可以操作0到多个银行账户

  4. 聚合/组合:表示部分与整体的关联关系

    • 聚合: ‘整体’有管理‘部分’的特有的职责;它用端点带有空菱形的线段表示, 空菱形与‘整体’类相连接
    • 组合: ‘整体’拥有‘部分’的生命;它用端点带有实菱形的线段表示, 实菱形与‘整体’类相连接

    聚合与组合的区别:

    聚合:has-a关系,父类包含子类,子类可以独立于父类存在

    ​ 班级和学生是一种聚合关系。一个班级,可以有学生,也可以没有学生;反过来,当我们把班级解散,学生仍然存在。

    组合:part-of关系,父类拥有子类,子类不能独立于父类存在

    ​ 身体与细胞是一个组合关系。但我们创建一个身体,细胞随之被创建;反过来,当我们销毁一个身体,细胞随之被销毁。

    • 每个表示部分的类与表示整体的类之间有单独的关联, 但是为了方便起见, 连线结合在一起

2.6 关联类 Association Class

关联类它也是一个类,由类、关联和虚线组成。

它可能有属性、操作和关系

当任何一对对象在任何时间点之间只有一个唯一链接时,就可以使用关联类

如果一对对象在一个给定的时间点上彼此之间可能有许多链接,那么你可以通过用一个普通的类替换它来具体化这种关系

3. 顺序图

3.1 相关概念

  • 交互:对象之间为实现某一功能而必须实施的协作过程、 动态行为, 称为交互
  • 消息:对象间的协作与交流表现为一个对象以某种方式启动另一个对象的活动,这种交流在UML里被定义为消息
  • 顺序图的建模元素
    • 对象或角色(role)
    • 参与者
    • 消息
  • 交互图
    • 交互的过程表现出来,就是交互图
    • 顺序图、通信图,都是交互图

3.2 交互的基本概念–消息

  • 同步消息:发送消息的对象要等到接收消息的对象执行完所有操作后,发送消息的对象才能继续执行自己的操作。

  • 异步消息:发送消息的对象发送消息后,不用等待接收对象是否执行,继续执行自己的操作。

3.3 基本建模元素

对象、生命期(对象生命线)、控制焦点、消息、消息序号(可选)

3.4 顺序图小结

  • 顺序图可以动态验证类模型的可行性
  • 顺序验证的某一功能, 属于某个用例描述的功能中的一部分
    • 又被称为用例实现 “usecase realization”
  • 顺序图从上到下, 反映了个对象相互协作的时间顺序

4. 状态图

4.1 状态图的概念

  1. 状态(state):

    • 是对象的生命期中的一个条件或状况
    • 在此期间,对象可以响应事件、执行某活动等
    • 例如,灯,有几个状态?2个:亮和暗
  2. 状态机(state machine) :
    • 是一种行为,
    • 说明对象在它的生命期中, 响应事件所经历的状态序列 以及它们对每个事件的响应
  3. 状态图(state diagram, State Chart ):
    • 状态机可以用状态图来可视化。
    • 状态图显示了一个状态机,它强调从状态到状态的控制流

4.2 状态组成

  • 名称(name),每个单词首字母大写
  • 进入/退出动作(entry/exit action)
  • 内部迁移(internal transition)
  • 子状态 (substate)
  • 延迟事件 (deferred event)

4.3 事件 Event

  • 事件是对一个在时间和空间上占有一定位置的有意义的事情的描述

    • 在状态机的语境中,一个事件是一个激励的发生,它能够触发一个状态迁移
  • UML 对4种事件进行建模

    • 参量变化 change event

      • 布尔表达式值变化、定时器、溢出:是内部事件
    • 信号 signal (异步)

    • 调用 call (同步)

    • 时间事件 time event

      • 时间事件 是表示一段时间的推移

        用关键字after 后面跟着时间表达式

        用关键字at 表示某个绝对时间点上发生的时间事件

      • 变化事件 表示状态的一个变化或某些条件得到满足的事件

        用关键字 when后跟一个布尔表达式,当条件满足,则引发变化事件

4.4 迁移Transition

  • 在状态A,发生事件并满足一定条件,转到状态B

  • 一个迁移由5部分组成

    • 源状态 source state

    • 事件触发器 event trigger (触发事件名称)

    • 触发条件 guard condition

    • 效应(effect) (或称,迁移动作):可执行的动作

    • 目标状态

  • 特殊的迁移

    • 自身迁移 self transition:从状态A迁移到状态A
    • 内部迁移 internal transition:在状态A内部 行为

4.5 状态图的建模元素

  • 状态

    • 一般状态:圆角矩形
    • 初始状态:实心圆
    • 结束状态:“牛眼” (bull’s eye)

  • 事件

    • 触发事件名[触发条件]/迁移动作

      • 这三个部分都是可以省略的,但至少有一部分
      • 事件依附于表示迁移的箭线

  • 迁移

    • 叉形箭头实线

      • 从初始状态指向目标状态

4.6 状态图建模注意事项

  • 不允许孤立的状态存在
  • 不允许只进不出的状态迁移 (“黑洞” )
  • 不允许只出不进的状态迁移 (“奇迹” )
  • 不允许没有事件发生的迁移

4.7 小结

状态图具体实例可以参考:http://t.csdn.cn/lSyJK

活动图、类图、顺序图、状态图相关推荐

  1. 类图 顺序图 活动图 状态图 用法和比较

    使用电梯仿真系统来解释下列各种图的关系 类图 为什么要使用用类图: 我们在开发系统的时候是不是经常采用 分而治之  的思想 即将其分解为较为简单的子系统. 而使用类图道理也是一样,目的就是为了简化逻辑 ...

  2. 【软件工程】看我火眼金睛——系统流程图、程序流程图、数据流图、活动图、状态图、顺序图辨析

    [前言] 在软件工程中我们学习了数据流图,程序流程图,UML中的活动图,状态图,顺序图,这些图貌似都是在描述软件的执行过程,那么它们到底有哪些相同点,又有哪些不同点呢?下面,我们一起来探索一下. [软 ...

  3. 用Enterprise Architect画类图和顺序图(一)

    新建一个Project 没什么好说的,"文件-新建项目",然后选择保存位置就好了,模式的话由于我喜欢一个包一张图所以一般都选择"新建包的时候同时新建图". 会弹 ...

  4. Eclipse中使用ModelGoon插件生成类图及顺序图

    前言 ​ 在做课设时,发现了几个比较强大的功能,如可以使用EA或Rose通过已有的类图生成对应的代码,但是通过测试发现,其生成的代码是简单的代码框架.但是如果已有项目代码,然后逆向生成类图呢?发现在E ...

  5. UML 的概述 和 顺序图

    UML 的概述 和 顺序图 标准建模语言 UML 是一种直观化.明确化和文档化的通用可视化建模语言.它捕捉了被构建系统的有关决策和理解,用来理解.设计.浏览.配置.维护以及控制系统的信息. 由于复杂系 ...

  6. UML顺序图/序列图/时序图

    UML顺序图/序列图/时序图 UML时序图 什么是顺序图 基本元素 参与者 对象 生命线 激活框 消息 绘制工具 visio 亿图 UML时序图 什么是顺序图 为了实现系统功能,若干个对象之间需要交互 ...

  7. 软件工程复习笔记 顺序图(时序图)

    顺序图(时序图) 前言 顺序图 顺序图的组成元素 消息的分类 顺序图提供动态视角 例 饮料销售机问题域 例 带界面的简易计算器 应用程序框架结构 MVC设计模式 例 用户登录(有时间再完善) SSH ...

  8. UML学习笔记——顺序图(时序图)

    文章目录 顺序图(时序图) 顺序图的引入 顺序图的概念 顺序图的组成 ①对象( Object) ②生命线( Lifeline ) ③激活(Activation) (控制焦点focus of contr ...

  9. uml通信图画法_UML 交互图 (顺序图、通信图、鲁棒图、定时图)

    交互与交互图 交互的概念 一次交互就是指在特定语境中,为了实现某一个目标,而在一组对象之间进行交换的一组消息所表示的行为 消息 UML中的4种交互图 顺序图:顺序图是一种强调消息时间顺序的交互图,为读 ...

  10. 教学管理系统-实验四 顺序图

    教学管理系统-实验四 顺序图 实验三链接:https://blog.csdn.net/qq_41871094/article/details/89931345 登陆 1.1 图形文档 1.2 文字说明 ...

最新文章

  1. 透视大数据时代下的物联网生活
  2. hdu 5606(并查集)
  3. 【51nod】1239 欧拉函数之和 杜教筛
  4. 《MySQL8.0.22:Lock(锁)知识总结以及源码分析》
  5. Dubbo-go v3.0 正式发布 ——打造国内一流开源 Go 服务框架
  6. Python 变量赋值
  7. ASP 中调用函数关于Call使用注意的问题
  8. pytorch---之指定GPU
  9. linux桌面cpu,ubuntu14.04设置桌面显示网速、cpu信息等
  10. mac安装ios和Android模拟器进行h5页面调试
  11. Base64自定义编码表及破解
  12. 【JavaSE】自定义异常
  13. python爬虫爬取知乎图片,轻松解决头像荒
  14. 【Python turtle】使用turtle实现随机满天星星效果(完整代码+效果图)
  15. 【NLP】中文文本分类数据增强方法:EDA 与代码实现
  16. 全国大学生网络安全精英赛初赛(nisp一级)
  17. 关于webrtc的多人视频会议的杂乱记录
  18. xss labs 挑战之旅
  19. vijos1153 猫狗大战
  20. 临泉新汇英高中2021高考成绩查询,昨天,临泉这所学校为学子们举行了这种仪式.........

热门文章

  1. shell编写俄罗斯方块
  2. 国内比较好的软件接单平台有哪些?
  3. 局域网聊天软件源代码(包括语音聊天)
  4. css3 图片阴影、翘边效果
  5. 诸葛:分析师是如何写好数据研究报告的?
  6. C++笔记(Ⅵ_模板)
  7. 算法系列——寻找峰值 (Find Peak Element)
  8. loadrunner11 录制手机
  9. java获取当天开始,结束时间
  10. java输出执行开始时间,结束时间和运行时间