一、UML统一建模语言

  1. UML由3个要素构成:UML,的基本构造块、支配这些构造块如何放置在一起的规则和运用与整个语言的一些公共机制。
  2. UML, 的词汇表包含3种构造块:事物、关系和图。事物是对模型中最具有代表性的成分的抽象;关系把事物结合在一起:图聚集了相关的事物。

二、关系

UML中有4种关系:依赖、关联、泛化和实现

  1. 依赖。
    依赖是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义。在图形上,把一个依赖画成一条可能有方向的虚线
    在这里插入图片描述
    A依赖于B,B被A依赖
  2. 关联。
    关联是一种结构关系,它描述了一组聚集是一种特殊类型的关联,它描述了整体和部分间的结构关系。关联和聚集的图形化表示如图。在关联上可以标注重复度(Multiplicity)和角色(Role)。
    在这里插入图片描述
    聚集:描述了整体和部分间的结构关系
    ①聚合:部分和整体的生命周期不一致,整体消失了,部分仍然存在,部分可以脱离整体存在。
    在这里插入图片描述
    ②组合:部分和整体的生命周期一致,整体消失了,部分也消失了,部分不可以脱离整体存在。(注意:实心的菱形)
    在这里插入图片描述
  3. 泛化
    泛化是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象。用这种方法,子元素共享了父元素的结构和行为。在图形上,把一个泛化关系画成一条带有空心箭头的实线,它指向父元素。
    在这里插入图片描述
    子类继承父类,父类泛化子类
  4. 实现
    实现是类元之间的语义关系,其中一个类元指定了由另一个类元保证执行的契约。在两种情况下会使用实现关系:一种是在接口和实现它们的类或构件之间;另一种是在用例和实现它们的协作之间。在图形上,把一个实现关系画成一条带有空心箭头的虚线。
    在这里插入图片描述
  5. 关联多重度
    (1)单向关联,有向
    在这里插入图片描述
    (2)关联名
    (3)关联类
    在这里插入图片描述

三、UML图

9种:类图、对象图、用例图、序列图、通信图、状态图、活动图、构件图、部署图。序列图、通信图均被称为交互图。

1. 类图

在这里插入图片描述
(1)类指类名
属性:【- id:int】【权限修饰符 类名:数据类型】

+ public 共有的
- private 私有的
# protected 受保护的
~ package 包

(2)系统使用类的方法

①对系统词汇建模
②对简单的协作建模
③对逻辑数据库模式建模

类图:一组对象,接口,协作和他们之间的关系

2. 对象图

对象图展现了某一时刻一组对象以及它们之间的关系,描述了在类图中所建立的事物的实例的静态快照。对象图一般包括对象和链。
在这里插入图片描述

在这里插入图片描述

3. 用例图

用例图展现了一组用例、参与者(Actor)以及它们之间的关系。
用例之间的扩展关系(<>)和包含关系(<>),参与者和用例之间的关联关系,用例与用例以及参与者与参与者之间的泛化关系。
在这里插入图片描述
(1)包含关系(用例和用例之间的关系)
一个用例包含另一个用例
在这里插入图片描述
(2)扩展关系(用例和用例之间的关系)
一个用例执行的时候,可能发生一些特殊情况或可选情况,这个用例就是这个用例的扩展用例
在这里插入图片描述
(3)泛化关系(参与者与参与者之间的关系,用例与用例之间的关系)
在这里插入图片描述
(4)关联(参与者与用例之间的关系)
(5)当系统的静态用例视图建模时,可以使用用例图的方式
①对系统的语境建模
②对系统的需求建模
(6)用例:将系统的一个功能描述成一系列事件

4. 序列图(顺序图)—— 交互图

(1)交互图用于对系统的动态方面进行建模。交互图由一组对象和它们之间的关系组成,包含它们之间可能传递的消息。
(2)序列图是强调消息时间顺序的交互图。通信图是强调接收和发送消息的对象的结构组织的交互图。
(3)序列图是场景的图形化表示,描述了以时间顺序组织的对象之间的交互活动。形成序列图时,首先把参加交互的对象放在图的上方,沿水平方向排列。通常把发起交互的对象放在左边,下级对象依次放在右边。然后,把这些对象发送和接收的消息沿垂直方向按时间顺序从上到下放置。
在这里插入图片描述
(4)序列图有对象生希线。对象生命线是一条垂直的虚线,表示一个对象在一段时间内存在。
(5)控制焦点:是一个瘦高的矩形。矩形的顶部表示动作的开始,底部表示动作的结束(可以由一个返回消息来标记)。还可以通过将另一个控制焦点放在它的父。
(6)生命周期:create开始,destory结束

5. 通信图 —— 交互图

在这里插入图片描述
(1)通信图(协作图):强调收发消息的对象的结构组织。通信图强调参加交互的对象的组织。
(2)首先要将参加交互的对象作为图的顶点,然后把连接这些对象的链表示为图的弧,最后用对象发送和接收的消息来修饰这些链。
(3)通信图有顺序号。为表示一个消息的时间顺序,可以给消息加一个数字前缀(从1号消息开始),在控制流中,每个新消息的顺序号单调增加(如2、3等)。为了显示嵌套,可使用带小数点的号码(1表示第一个消息:1.1表示嵌套在消息1中的第一个消息,1.2 表示嵌套在消息1中的第二个消息,等等)。沿同一个链可以显示许多消息(可能发自不同的方向),并且每个消息都有唯一的一个顺序号。
(4)序列图和通信图是同构的,它们之间可以相互转换。
(5)通信图,对象之间的消息流及顺序

6. 状态图

(1)状态图展现了一个状态机它由状态、转换、事件和活动组成。状态图关注系统的动态视图,对于接口、类和协作的行为建模尤为重要,强调对象行为的事件顺序
(2)状态和活动
①状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。既改变状态,又做动作。
②状态主要有:初态(即初始状态)、终态(即最终状态)和中间状态。状态之间为状态转换,用一条带箭头的线表示。带箭头的线上的事件发生时,状态转换开始(有时也称之为转换“点火”或转换被“触发”)。
在这里插入图片描述
一张状态图中只能有一个初态,而终态可以没有,也可以有多个。
③活动表(活动):活动名/动作表达式
在这里插入图片描述
经常使用三种标准事件:entry,exit,do
entry:入口动作,进入状态,立即执行
exit:出口动作,退出状态,立即执行
do:内部活动,占有有限时间,并可以中断的工作
(3)事件
①事件是在某个特定时刻发生的事情,它是对引起系统做动作或从一个状态转换到另一个状态的外界事件的抽象。
②事件就是引起系统做动作或(和)转换状态的控制信息。

在这里插入图片描述
④转换包含两个状态:原状态和目标状态,转换还包含事件,监护条件,动作
⑤事件触发转换(迁移)
⑥活动(动作)可以在状态内执行,也可以在状态转换(迁移)时进行
⑦监护条件是一个布尔表达式,事件说明,监护条件,为真则发生转换;无事件说明,监护条件为真则为真
在这里插入图片描述
(4)组合状态(超状态),嵌套状态(子状态)
(5)状态图是对反应型对象建模
这些动态方面可以包括出现在系统体系结构的任何视图中的任何一种对象的按事件排序的行为,这些对象包括类(各主动类)、接口、构件和结点。

7. 活动图

在这里插入图片描述
(1)活动图是一种特殊的状态,它展现了在系统内从一个活动到另一个活动的流程。
活动图专注于系统的动态视图,它对于系统的功能建模特别重要,并强调对象间的控制流程。
(2)使用活动图的方式:对工作流建模,对操作建模

8. 构件图(组件图)

在这里插入图片描述
(1)构件图展现了一组构件之间的组织和依赖。
(2)构件图专注于系统的静态实现视图。它与类图相关,通常把构件映射为一个或多个类、接口或协作。
(3)部署,组件之间的关系类似于依赖

9. 部署图

(1)部署图是用来对面向对象系统的物理方面建模的方法
(2)静态图
(3)部署图展现了系统软硬件之间的关系,在实施阶段使用
(4)立体图,>表示制品。

10. 总结

  • 静态建模:类图、对象图、用例图
  • 动态建模:序列图(顺序图,时序图)、通信图(协作图)、状态图、活动图
  • 物理建模:构件图(组件图)、部署图
  • 交互图:序列图(顺序图,时序图)、通信图(协作图)
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐