软考71-上午题-【面向对象技术2-UML】-UML中的图2

一、用例图

上午题,考的少;下午题,考的多。

1-1、用例图的定义

用例图展现了一组用例、参与者以及它们之间的关系。

用例图用于对系统的静态用例图进行建模。

可以用下列两种方式来使用用例图:

1、对系统的语境建模;

2、对系统的需求建模。

1-2、用例图包含以下内容:

1、用例

2、参与者

3、关系:

①用例之间的关系:扩展关系(《extend》)、包含关系(《include》)、泛化关系;

②参与者之间的关系:泛化关系;

③参与者和用例之间的关系:关联关系。

示例:

包含关系:

用例和用例之间的关系。

示例1:

用例可以理解为参与者(用户)的行为。

参与者与用例之间,关联关系:一条直线。

示例2:

扩展关系

用例和用例之间的关系。

一个用例执行时,可能会发生一些特殊的情况,或者可选的情况,这种情况就是用例的扩展用例。

示例1:特殊情况

示例2:可选情况

泛化关系

参与者-参与者;

用例-用例;

示例:

1-3、真题

真题1:

真题2:

二、 交互图

交互图用于对系统的动态方面进行建模。一张交互图表现的是一个交互。

类图、对象图、用例图:静态图

一张交互图由:一组对象、他们之间的关系、他们之间可能传递的消息。

交互图一般包括:对象、链、消息。

交互图的分类:

  • 序列图:强调消息时间顺序的交互图;
  • 通信图:强调接收、发送消息的对象的结构组织的交互图。

2-1、序列图(顺序图)

2-1-1、序列图的定义

序列图描述了以时间顺序组织的对象之间的交互活动。

示例:

首先把参加交互的对象放在图的上方,沿水平方向排列。

通常把发起交互的对象放在左边,下级对象依次放在右边。然后,把这些对象发送和接收的消息沿垂直方向按时间顺序从上到下放置。这样,就提供了控制流随时间推移的清晰的可视化轨迹。

2-1-2、序列图有两个不同于通信图的特点

1、序列图有对象生命线;

对象生命线是一条垂直的虚线,表示一个对象在一段时间内存在。

对象,生命线的开始、结束:

1、对象可以在交互过程中创建,他们的生命线从接收到构造型为create的消息时开始;

2、对象可以在交互过程中撤销,他们的生命线从接收到构造型为destory的消息时结束;(并给出一个×的标记)

2、序列图有控制焦点;

控制焦点是一个瘦高的矩形,表示一个对象执行一个动作所经历的时间段。

矩形的顶部,表示动作的开始,底部表示动作的结束。

2-1-3、序列图的消息:

2-1-4、序列图实例:

2-1-5、真题

真题1:

Account实现的方法,看指向Account类的箭头。

evaluation虽然也指向Account类,但是它不是一个方法,因为不是:evaluation()

真题2:

真题3:

2-2、通信图(协作图)

2-2-1、通信图的定义

通信图强调收发消息的对象的结构组织。

  • 首先,将参加交互的对象作为图的顶点;(矩形)
  • 然后把连着这些对象的链作为图的弧;(直线)
  • 最后用对象发送和接收的消息来修饰这些链。

2-2-2、通信图有两个不同于序列图的特性

1、通信图有路径。

为了指出一个对象如何与另一个对象链接,可以在链的末端附上路径构造型(如构造型《local》,表示指定对象对发送者而言是局部的)。

通常只需要显式地表示以下几种链的路径:local(局部)、parameter(参数)、global(全局)以及self(自身),但不必表示 association(关联)。

2、通信图有顺序号。

表示一个消息的时间顺序,可以给一个消息加上一个数字前缀。(从1号消息开始),在控制流中,每个新消息的顺序号单调增加(如 2、3等)。

为了显示嵌套,可使用带小数点的号码(1表示第一个消息;1.1 表示嵌套在消息1中的第一个消息,1.2 表示嵌套在消息1中的第二个消息,等等)。嵌套可为任意深度。

还要注意的是,沿同一个链可以显示许多消息(可能发自不同的方向),并且每个消息都有唯一的一个顺序号。

序列图和通信图是同构的,它们之间可以相互转换。

2-2-3、通信图的实例

2-2-4、真题

真题1:

真题2:

相关推荐
im_AMBER6 分钟前
数据结构 06 线性结构
数据结构·学习·算法
新子y9 分钟前
【小白笔记】最大交换 (Maximum Swap)问题
笔记·python
你要飞4 小时前
Hexo + Butterfly 博客添加 Live2D 看板娘指南
笔记
Main. 246 小时前
从0到1学习Qt -- 创建第一个Hello World项目
学习
壹号用户7 小时前
python学习之生成器&三者关系
学习
new coder7 小时前
[c++语法学习]Day10:c++引用
开发语言·c++·学习
星域智链7 小时前
宠物智能用品:当毛孩子遇上 AI,是便利还是过度?
人工智能·科技·学习·宠物
ajsbxi7 小时前
【Java 基础】核心知识点梳理
java·开发语言·笔记
呱呱巨基7 小时前
vim编辑器
linux·笔记·学习·编辑器·vim
新子y8 小时前
【小白笔记】普通二叉树(General Binary Tree)和二叉搜索树的最近公共祖先(LCA)
开发语言·笔记·python