Skip to content

3、图

  • 是一组元素的图形表示
  • 类图、用例图、对象图都是对系统的静态方面进行建模
  • 序列图和通信图、状态图是对系统的动态方面进行建模

类图

  • 展现了一组对象、接口、协作和它们之间的关系。是建模中最常见的图
  • 对系统静态设计视图建模,支持系统的功能需求
  • 对系统的词汇、简单的协作、逻辑数据库模式建模
  • 通常包括:类、接口(少)、协作(少)、依赖泛化和关联关系
  • 抽象类不能直接实例化
属性和方法前面会有修饰符
  • +:public
  • -:private
  • #:projected
  • ~:package

对象图

  • 展现了某一时刻一组对象以及它们之间的关系
  • 描述了类图中所建立的事物的实例
  • 包括对象和链
  • 矩形框中格式是对象名:类名

用例图

  • 展现了一组用例(椭圆)、参与者(小人标志)以及它们之间的关系
  • 用于对系统的静态用例视图(系统的语境、系统的需求)进行建模
  • 包括用例、参与者、用例之间的扩展关系(<<extend>>)和包含关系(<<include>>);参与者和用例之间的关联关系(直线连接);用例与用例以及参与者与参与者之间的泛化关系(继承的反关系,空心三角指向父类)

包含关系

  • 是用例和用例之间的关系
  • 一个用例包含另一个用例
  • 执行用例一定会执行被包含用例
  • 是一个虚线箭头,上面写一个关键字<<include>>
  • 箭头右边的是被包含用例,左边是基本用例

扩展关系

  • 是用例和用例之间的关系
  • 一个用例执行的时候,可能会发生一些特殊的情况或可选的情况,这种情况就是扩展用例(比如借书,超过还书期限就要罚款,罚款就是扩展用例)
  • 是一个虚线箭头,上面写一个关键字<<extend>>
  • 箭头右边的是被基本用例,左边是拓展用例

泛化关系

  • 一般元素和特殊元素之间的关系,是参与者与参与者之间的关系;是用例与用例之间的关系
  • 是一个实线带一个空心的三角
  • 箭头右边是父类

概念

  • 关联是参与者和用例之间的关系
  • 包含
  • 拓展都是用例和用例之间的关系
  • 泛化是参与者与参与者、用例与用例之间的关系

交互图

  • 对系统的动态部分进行建模
  • 一张交互图表现的是一个交互,由一组对象和它们之间的关系组成个,包含它们之间可能传递的消息
  • 交互图一般包含对象、链和消息

序列图(顺序图)

  • 是场景的图形化表示
  • 描述了以时间顺序组织的对象之间的交互活动,展示一个用例和多个对象的行为
  • 把参加交互的对象放在图的上方(对象名:类名)
  • 对象可以在交互中创建
  • 把发起交互的对象放在左边,下级对象放在右边,把这些对象发送和接受的消息沿垂直方向按时间顺序从上到下放置
  • 差表示对象销毁
  • 序列图有生命线(一个对象一条生命线,是一条垂直的虚线),表示一个对象在一段时间内存在
  • 序列图有控制焦点(一个瘦高的矩形),表示一个对象执行一个动作所经历的时间段
  • 序列图有四类消息
    • 同步消息:发送以后需要等待消息返回
    • 异步消息:发送以后不需要等待消息返回
    • 调用消息(实线箭头):A 对象向 B 对象发送消息,指向谁谁需要实现特定方法
    • 返回消息(反方向虚线箭头):从右往左的消息

通信图(协作图)

  • 强调收发消息对象的结构组织
  • 将参与交互的对象作为图的顶点,把连接对象的链表示为图的弧,最后用对象发送和接受的消息来修饰这些链
  • 通信图有路径(在链的末端加上路径构造型):local(局部)、parameter(参数)、global(全局)、self(自身)
  • 通信图有顺序号(会给消息前面加数字前缀,为了显示嵌套可以使用带小数点的号码(1 表示第一个消息,1.1 表示嵌套在消息 1 中的第一个消息))
  • 和顺序图可以相互转换

状态图

  • 展现了一个状态机
  • 由状态、转换、事件和活动组成
  • 是一个动态图,一种对象的行为进行建模

状态和活动

  • 状态是任何可以被观察到的系统行为模式,分为简单状态和组合状态
  • 一个状态代表系统的一种行为模式
  • 有初态(黑实心圆)、终态(黑圆点加一个圆)和中间状态(圆角四边形,可以用两条水平线分成上中下 3 个部分,上面是状态的名称,下面是活动表
  • 活动表有若干动作组成,格式如下:事件名 / 动作表达式,常用的是 entry(进入该状态的动作,立即执行)、do(指定在该状态下的动作,占有有限事件,并可以中断的工作)、exit(指定退出该状态的动作,立即执行)
  • 状态之间为状态转换(箭头线表示),箭头上的事件发生时,状态转换开始
  • 初态只能有一个,终态可以是 0 或多个

转换和事件

  • 事件是在某个特定时刻发生的事情
  • 引起系统作动作或从一个状态转换到另一个状态的外界事件的抽象
  • 状态的变迁是事件触发的,事件要包括两个状态
  • 如果箭头上没有标明事件,就说明在源状态的内部活动执行完之后自动触发转换
  • 活动(动作)可以在状态内执行,也可以在状态转换(迁移)时执行
  • 转换的格式为:触发事件【监护条件(是一个布尔表达式)】 / 动作 监护条件决定状态转换

活动图

  • 一种特殊的状态图
  • 展现了从一个活动到另一个活动
  • 专注于系统的动态视图
  • 对复杂用例中的业务处理流程进行建模
  • 并发分岔后可以同时执行

构件图(组件图)

  • 展现了一组构件之间的组织和依赖
  • 专注于系统静态展现视图
  • 与类图相关,把构件映射为一个或多个类、接口、协作

构件会有一个标记,类似一个大矩形和两个小矩形

  • 供接口:依赖于需接口
  • 需接口

部署图

  • 面向对象系统的物理方面的建模方法
  • 展现了运行时处理结点以及其中构件的配置
  • 展现了软件和硬件之间的关系,在实施阶段使用

总结

  • 静态建模:类图、对象图、用例图

  • 动态建模:序列图(顺序图、时序图)、通信图、状态图、活动图

  • 物理建模:构件图、部署图

  • 交互图:序列图、通信图

KESHAOYE-知识星球 V20251030171600