可视化建模以及UML期末复习篇----UML图

这是一篇相对较长的文章,如你们所见,比较详细,全长两万字。我不建议你们一次性看完,直接跳目录找你需要的知识点即可。

--------欢迎各位来到我UML国!

一、UML图

总共有如下几种:

  1. 用例图(Use Case Diagram):描述系统功能和用户交互。
  2. 类图(Class Diagram):描述系统中的类、接口、它们的属性、方法和关系。
  3. 序列图(Sequence Diagram):描述对象间的消息交换顺序。
  4. 状态图(State Diagram):描述对象状态的变化。
  5. 活动图(Activity Diagram):描述业务流程或操作的步骤。
  6. 组件图(Component Diagram):描述系统的物理结构,展示组件和它们的依赖关系。
  7. 部署图(Deployment Diagram):描述系统的物理部署,展示硬件和软件组件的分布。
  8. 通信图(Communication Diagram):序列图的变体,强调对象间的关系。
  9. 定时图(Timing Diagram):描述对象间交互的时间约束。
  10. 交互概览图(Interaction Overview Diagram):组合不同类型的交互图。
  11. 对象图(Object Diagram):类图的实例,显示对象间的具体交互。
  12. 包图(Package Diagram):描述系统的逻辑视图,展示包和类的关系。


 接下来,小的给小主详细介绍一下宫里几位主子:

 <1>皇帝:用例图【Use Case】

1. 定义

  - 用例图是表示一个系统中用例与参与者关系之间的图,描述系统中相关用户和系统对不同用户提供的功能和服务。 

  - 用例就是参与者提出来的要求实现的功能。

2.构成元素

  【1】参与者(Actor)**:位于用例的外部,和软件系统有交互的人或者事物。图如下:

  【2】系统边界(System Scope)**:表示软件系统的边界,边界内部就是软件必须实现的,边界外部就不需要写代码来实现。图如下:


  【3】用例(Use Case)**:描述系统对外提供的功能,用椭圆表示。

​​​​​​​

 【4】关联(Association)**:表示参与者和用例之间的关系,用直线表示。

如何识别参与者?为系统提供输入的人或事物

举例:       

为系统提供输入的人                         网上商店:卖家  买家

为系统提供输入的物                         教务管理系统 学生宿舍管理系统

接收系统输出的人或事物                 校长接收全校成绩/挂科人数

需要接入的第三方系统或设备          电商系统  支付宝、微信、网络银行系统

时间是否会触发某些事件                 还书超过时间要付赔偿金

负责支持或维护系统中信息的人      图书管理员

 3.画出参与者、用例之间的关系

3.1   Generalization :泛化关系、继承关系

图形:带空心三角形的实线,指向父类

例如狗和动物,自行车和交通工具

参与者与参与者之间:

用例与用例之间:

  3.2   Include:包含关系

      两个用例之间的关系,表示一个用例的实现需要另一个用例的参与。

      图形:带箭头的虚线,指向被包含

      例如去餐厅吃饭需要付钱,网上购物需要填写收货地址

      网络商店:用户登录(A)   账号密码登录 (B)  微信登录 (B)

       A用例称之为基用例,两个B用例称之为包含用例;     

       没有B用例,A用例是不完整的;B用例是必不可少的

    

 3.3   Extend:扩展关系

   表示一个用例是另一个用例的可选部分,基本用例是一个完整的用例,即使没有扩展用例       也能完成功能。

   图形:带箭头的虚线,指向基用例

   打个比方,你去购买商品的时候需要申请折扣,在线预定酒店需要请求特殊需求,需要一      个母婴房或者是无烟房。就是不是每次都会发生的。

  购买商品又叫做基用例,申请折扣是拓展用例;

  在线预订酒店是基用例,请求特殊需求就是拓展用例

   图书馆管理系统:归还图书(A)     缴纳罚金(B)

   A用例是基用例,B用例称之为扩展用例

   A用例是B用例执行的前提;

   B用例是A用例执行过程中满足某些条件才执行的

3.4    Association:关联关系

表示两个类之间存在某种联系,是一种拥有的关系,它使一个类知道另一个类的属性和方法。

图形:
- **双向关联**:通常用一条不带箭头的实线表示,表示两个类之间相互关联。
- **单向关联**:用一条带箭头的实线表示,箭头指向被拥有的类。


一个“学生”(Student)类和一个“课程”(Course)类,一个学生可以注册多个课程,一个课程可以有多个学生注册。这种情况下,学生和课程之间的关联关系是双向的。


 

如果关联关系是单向的,比如一个“老师”(Teacher)类和一个“课程”(Course)类,一个老师可以教授多个课程,但一个课程通常只有一个主要负责人。这种情况下,老师和课程之间的关联关系是单向的,从“老师”指向“课程”。

Teacher --> Course

 4.用例规约

表达行业性功能的业务流程的方式:活动图、用例规约

用例图无法表达行业性功能的业务流程,只能用上面两种方式

用例名称

用户登录

参与者

读者、学生、老师

用例简述

图书馆的各种读者通过用户登录获取其在系统中的合法身份

前置条件

已经注册了读者身份

基本事件流

用户操作

  1. 用户要求进行用户登录

3、用户在登录界面上输入账号、密码数据,

并提交

系统反应

2、系统显示登录界面

4、系统验证账号是否存在,密码是否正确,系统记录

登录成功的用户的数据;系统显示主界面

分支事件流(n)

在基本事件流第4步发现账号不存在或者密码错误,进入分支事件流

回到基本事件流第3步

系统再一次显示登录界面,界面上显示上一次的错误原因

后置条件

系统记录用户信息,修改用户的状态

  • 用例规约中的文字禁止使用软件专业术语
  • 基本事件流只写正确执行的主要事件流,不正确的流程写在分支事件流
  • 事件流只写用户与系统之间的交互,系统内部不用描述的,将软件系统看成一个黑匣子

 5. 用例图的用途

-用例图通过参与者、用例以及它们之间的关系来描述系统的功能,便于开发人员开发。

用于描述系统功能和用户交互

复习题:

    

   <1>上图中的参与者有:

  1. 读者   2、借阅图书   3、用户登录  4、微信登录

   <2>上图中那两个构件事物之间存在包含关系:

  1. 学生和读者   2、归还图书和缴纳罚金  3、用户登录和账号密码登录

   <3>考点:包含关系和扩展关系有什么相同点和不同点?

复习题答案

<1>找火柴人:选1

<2>找include:选3

<3>

相同点:包含关系和扩展关系都是从现有的用例中抽取出公共的部分信息,作为一个单独的用例,然后通过不同的方法来重用这个公共的用例,以减少模型维护的工作量。

不同点:
1. **执行时机**:
   - **包含关系**:在基用例的基本流执行时,包含用例一定会执行。这意味着包含用例是基用例执行的必要部分。
   - **扩展关系**:扩展用例是对基用例的扩展,即使没有扩展用例的参与,基用例也可以完成一个完整的功能。扩展用例只有在基用例满足某种条件的时候才会执行,这使得扩展用例成为基用例的可选部分。

2. **图形表示**:
   - **包含关系**:在用例图中,包含关系使用带箭头的虚线表示,箭头从基用例指向包含用例,并在线上标注“<<include>>”。
   - **扩展关系**:在用例图中,扩展关系也使用带箭头的虚线表示,但箭头从扩展用例指向基用例,并在线上标注“<<extend>>”。


<2>皇后:类图【Class Diagram】

1. 定义

- 类图用于描述系统中的类、接口、属性、方法以及它们之间的关系。它是面向对象设计的核心,用于展示系统的静态结构。

2.构成元素

【1】类(Class)**:表示具有相同属性和操作的一组对象的蓝图。

类通常用矩形表示,分为三个部分:顶部是类名,中间是属性,底部是操作。

【2】接口(Interface)**:定义了一组操作规范,但不实现这些操作。

 【3】 属性(Attributes)**:类中定义的变量,用于存储数据。

 【4】 操作(Operations)**:类中定义的函数或方法,用于执行动作。

 【5】关系(Relationship)**:
- **关联(Association)**:表示两个类之间的结构性关系。
- **依赖(Dependency)**:表示一个类的变化可能影响另一个类。
- **泛化(Generalization)**:表示继承关系,子类继承父类的属性和操作。
- **实现(Realization)**:表示一个类实现了一个接口。
- **聚合(Aggregation)**:表示整体与部分的关系,部分可以独立于整体存在。
- **组合(Composition)**:表示整体与部分的关系,部分不能独立于整体存在。

 【6】可见性(Visibility)
- **+** public:公共的,可以被任何其他类访问。
- **-** private:私有的,只能在定义它的类内部访问。
- **#** protected:受保护的,可以被定义它的类及其子类访问。
- **~** package:包访问权限,只能在定义它的包内部访问。

  • 两个类之间相互关联时,关联自身也具有属性和操作。
  • 类图主要展示系统的静态结构,但也可以表示动态方面,如对象间的关系和交互。

3.作用

- 提供系统的静态视图,帮助理解系统的结构和组成。
- 作为代码实现的蓝图。
- 促进团队成员之间的沟通和理解。

复习题:

 某商场会员管理系统包含一个会员类(Member), 会员的基本信息包括会员编号、 会员姓名、 联系电话、 电子邮箱、 地址等, 会员可分为金卡会员(GoldMember)和银卡会员(SilverMember)两种, 不同类型的会员在购物时可以享受不同的折扣; 每个会员可以拥有一个或多个订单(Order), 每一个订单又可以包含至少一条商品销售信息(ProductItem), 商品销售信息包括订单编号、 商品编号、 商品数量、 商品单价和折扣等; 每一条商品销售信息对应一类商品(Product), 商品信息包括商品编号、 商品名称、 商品单价、 商品库存量、 商品产地等。

<1>根据以上描述画出类图。

<2>UML类图中,关联和依赖的区别是什么?

A. 关联是有向的,依赖是无向的

B. 关联是无向的,依赖是有向的

C. 关联表示对象之间的关系,依赖表示类之间的继承关系

D. 关联表示类之间的继承关系,依赖表示对象之间的关系

<3>在UML类图中,多重性“1”表示什么含义?

A. 一个类的对象可以与另一个类的对象有多个关联。

B. 一个类的对象必须与另一个类的对象有一个关联。

C. 一个类的对象可以与另一个类的对象有零个或多个关联。

D. 一个类的对象可以与另一个类的对象没有关联。

<4>如果在UML类图中,一个类与另一个类之间的关联多重性标记为“0..*”,则表示:

A. 每个对象至多有一个关联对象。

B. 每个对象至少有一个关联对象。

C. 每个对象可以有零个或多个关联对象。

D. 每个对象必须有多个关联对象。

复习题答案

 <1>

<2>C. 关联表示对象之间的关系,依赖表示类之间的继承关系

<3>B. 一个类的对象必须与另一个类的对象有一个关联。

<4>C. 每个对象可以有零个或多个关联对象。


<3>贵妃:序列图【Sequence Diagram

1.定义

   - 序列图通过描述对象之间发送消息的时间顺序来显示多个对象之间的动态协作。它在详细设计阶段用于设计对象的交互和行为。
   - 它是一个二维图,横轴表示对象,纵轴表示时间,消息在各对象之间横向传递,依照时间顺序纵向排列。

2.构成元素

【1】角色(Actor)**:系统角色,可以是人或其他系统,子系统。以一个小人图标表示。

【2】对象(Object)**:对象位于序列图的顶部,以一个矩形表示。对象的命名方式一般有三种:对象名和类名、只显示类名(匿名类)、只显示对象名。


【3】生命线(LifeLine)**:每个对象底部中心的垂直虚线,表示对象在一段时间内的存在。


【4】激活(Activation)**:表示对象将执行相应操作的时间段的符号。在C语义中可以解释为一对括号{};用一个小矩形表示,即绿色圈中部分。

【5】消息(Message)**:对象之间传递的信息,用于表示对象之间的交互。消息分为同步消息、异步消息和返回消息。

3. 消息类型

  <1>同步消息(Synchronous Message)**:发送者发送消息后,必须等待接收者处理完毕后才能继续执行。
   <2>异步消息(Asynchronous Message)**:发送者发送消息后,不需要等待接收者的响应,可以继续执行后续操作。
   <3>返回消息(Return Message)**:表示一个对象收到消息后执行了相应的操作,并将结果返回给发送消息的对象。

4. 自关联消息

   自关联消息是指对象在序列图中发送消息给自己的情况。这种消息表示对象内部的自身行为或交互。

5. 创建和销毁消息

    参与者不一定在序列图交互的整个持续时间内都存在。可以根据传递的消息创建和销毁参与者。

复习题:

<1>上图绘制的是客户在自动售货机购买商品的顺序图,参与的用户界面类是:

A、出货器   B、前端   C、顾客    D、识别器

<2>正确按照时间顺序排列的消息是:

A.交付货币  交付商品信息   识别    出货

B.识别  交付货币  交付商品信息   出货

C.交付货币  识别  交付商品信息   出货

<3>交付货币消息将被实现为      类的方法

出货器   B、前端   C、顾客   D、识别器

 复习题答案

<1>B 找和用户有交互接触的类

<2>C 顺序图的时间顺序一般是从左到右,再从上到下

<3>D 消息成为消息指向的类中的方法,就是说  消息指向谁就实现谁的方法


<4>贵妃:状态图【State Diagram】

1. 定义

 - 状态图用于描述对象在系统中的所有可能状态及其相互之间的转变关系。它主要用于分析和设计基于事件驱动的系统,例如嵌入式系统、交互式软件或业务流程。

2.构成元素

【1】状态(State)**:表示对象在其生命周期中的各种条件或情况。用圆角矩形表示,包含状态名称,可选内部描述包括进入、退出和持续活动。


【2】初始状态(Initial State)**:系统或对象的起始点,用一个实心圆表示。

【3】最终状态(Final State)**:系统或对象生命周期的终止状态,用一个双圈的实心圆表示。

【4】选择状态(Choice State) **:一般用菱形表示

【5】状态转移(Transition)**:表示状态之间的变更,用带箭头的直线连接两个状态,箭头上标注触发事件、条件和动作。

【6】触发事件(Triggers)**:Triggers是指引起状态转换的事件或信号。它们是状态机响应的外部或内部刺激,可以是消息的接收、时间事件、条件满足或其他任何可以被状态机识别的事件。


【7】条件(Guard Condition)**:状态转移的约束,通常用方括号表示,条件为真时,转移才会发生。

这里有关Triggers和Guard我想补充一下,有些同学会比较困惑不太能理解。

比如现在咱就是过马路,因为现在是状态图对吧。路灯有红灯,绿灯,黄灯三种状态,咱都知道,一般过了一段固定的时间路灯就会变颜色,这个固定的时间就是Triggers,也就是我们说的触发器。这个Guard呢,比如说黄灯转绿灯就要没有车辆靠近,这个没有车辆靠近就是Guard。Triggers是Transition的必要条件,但是Guard不是。


【8】活动(Activity)**:表示在状态中执行的操作,可以细分为入口(entry)、持续(do)和出口(exit)动作。

3.画图

   第一步:右击Model根节点

   第二步:Add a Model using Wizard 添加新模型 

   第三步:State Machine选择一个模型 ---> Create pattern

   第四步:先画Initial开始状态和Final结束状态

   第五步:绘制其他状态State

   第六步:画状态之间的转移

   注意:一般initial、final和一般状态之间的转移不需要写转移条件

复习题: 

<1>状态图中,以下哪一项是描述状态之间转换的触发因素?

A. 状态         B. 转换         C. 事件         D. 动作

<2>在状态图中,当对象从一个状态转移到另一个状态,这个过程称为什么?

A. 事件         B. 转换         C. 动作         D. 状态

<3>下列哪一项不是状态图的核心元素?

A. 对象         B. 状态         C. 转换         D. 事件

<4>对于在线购物系统中的订单对象,以下哪一状态不可能出现在其状态图中?

A. 待付款         B. 已发货         C. 购物车         D. 已完成

<5>根据以下的描述,绘制“复印机”的状态图。

未接到工作命令时,复印机处理闲置状态,接到复印命令后,转入复印状态,完成复印后又回到闲置状态,等待命令。若复印时发现没纸,则进入缺纸状态,发出警告等待装纸,装纸完成后又进入闲置状态;若复印时发现卡纸,则进入卡纸(故障)状态,发出警告等待排除故障,故障排除后又进入闲置状态。

<6>绘制选课系统中课程(Course)对象的状态图。

   经过需求分析,Course课程对象有以下状态:创建(Created),添加到数据库中(In Database),课程(在数据库中)被删除(Deleted),课程被修改(Modified),课程被开设(纳入学期计划)(In Schedule),不允许选修(选修人数满)(Locked)。

 复习题答案

<1>C. 事件

<2>B. 转换

<3>A. 对象

<4>C. 购物车  

<5>

<6>


<5>嫔:活动图Activity Diagram

1. 定义

-活动图用于描述系统中业务流程、工作流或系统操作的动态行为。它展示了业务流程中的步骤以及这些步骤之间的控制流。

2. 构成元素 

【1】活动(Activity)**:表示一个操作或一个动作的执行,是活动图中的基本单元。


【2】动作状态(Action )**:表示一个动作的执行,是活动图中的一个节点。不可细分!

Activity和action是有区别的,一个Activity可以包括多个action。比如说你要去上早八,首先你要起床----去买个包子----走路到教室----认真听讲【混日子的就是打王者刷抖音偶尔抬头看一眼老师等吃饭】----下课,其中上早八就是Activity。起床/买包子/走路到教室/听讲/下课分别是5个Action。

【3】决策节点(Decision Node)**:具有一个进入控制流和至少两个导出控制流。判断是否满足条件。满足继续,不满足走另一条路。


【4】并发区域(Concurrent Region)**:表示多个活动可以并行执行。


【5】同步条(Synchronization Bar)**:表示多个并行活动的开始或结束。

【6】. 动作流(Action Flow)**:连接活动,表示活动之间的顺序执行。

【7】 分叉(Fork)和汇合(Join)**:

- 用来对并发的控制流建模

- 分叉用于将活动流分为两个或多个并发运行的分支,汇合用于将并行分支的活动流重新合并。

- 所有的子流程都要执行;所有子流程的执行具有并行执行的特点

【8】泳道(Swimlane)**:将活动图划分为不同的区域,每个泳道代表一个责任区域,指明活动是由谁负责的或发起的。

【9】对象流(Object Flows)**:表示动作状态或活动状态与对象之间的依赖关系,表示动作使用对象或动作对对象的影响。

【10】开始节点(Initial Node)**:表示流程的开始,通常用一个实心黑色圆点表示。

【11】终止节点(Final Node)**:表示流程的结束,通常用一个半实心球表示。

复习题:

<1>活动图中用于判断节点的多个控制流合并的元素是(   ).

   A  判断节点    B  泳道   C  合并   D  分叉

<2>下面不是活动图中的基本元素是(  ).

   A   分叉、合并    B  泳道、对象流    C   用况  状态   D  活动  分支

<3>活动图中用于活动分组的元素是(   ).

   A   泳道   B 控制流   C  判断节点   D  包

<4>下列建模适合使用活动图的有(   ),

  A  对业务流程建模    B  对程序流程建模   C 对体系结构建模  D  对数据库建模

<5>请根据以下流程,画一张学生请假的活动图。

学生填写请假单 ===> 班主任审批 ===> (请假时间>1天)学工处审批===>

学工处记录 ===> 班主任通知学生请假结果

<6>请根据以下流程,画一张活动图。

     卖家接收到买家的订单后处理订单的业务流程:

        财务部收款   开具发票

        仓储部备货   发物流

复习题答案

<1>C

<2>C

<3>A

<4>AB

<5>无脑画initial和final开始和结束-----依赖画Action动作-----使用ControlFlow连接所有动作


<6>嫔:组件图Component Diagram

1.定义

 - 组件图提供了系统的物理视图,展示了软件组件如何分解以及它们之间的依赖关系。

2.构成元素

【1】组件(Component)**
   - 组件是软件的可替换模块,它封装了实现细节,并提供了一个清晰的接口。
   - 在组件图中,组件通常用矩形表示,名称通常显示在矩形内部。

【2】接口(Interface)**
   - 组件提供的接口用小圆圈表示,位于组件的边界上。
   - 接口可以是用于组件间通信的点,也可以是组件提供的服务。

【3】组件之间的关系**
   - **依赖关系(Dependency)**:表示一个组件的使用或功能依赖于另一个组件的实现。
   - **实现关系(Realization)**:表示一个组件实现或特化了一个接口。
   - **聚合关系(Aggregation)**:表示组件间的整体与部分的关系,部分可以独立于整体存在。
   - **组合关系(Composition)**:表示组件间的强整体与部分的关系,部分不能独立于整体存在。

【4】可见性(Visibility)
   - 接口的可见性可以是公共的(+)或私有的(-),表示接口的访问权限。

【5】部署视图**
   - 组件图与部署图(Deployment Diagram)结合使用,可以展示组件在硬件上的部署情况。

复习题:

<1>组件图专注于系统的哪种实现图?

A. 动态         B. 静态         C. 基础         D. 实体

<2>在UML中,哪个元素是被节点执行的事物?

A. 包         B. 组件         C. 接口         D. 节点

<3>组件图通常在软件开发的哪个阶段使用?

A. 实现         B. 需求分析         C. 架构设计         D. 维护

<4>组件图中,哪个元素定义了组件提供或使用的功能?

A. 组件         B. 接口         C. 依赖关系         D. 关联关系

在这个组件图中:

  • 用户界面(UI)负责显示书籍信息和处理用户订单。
  • 订单处理(OP)管理订单逻辑和库存更新。
  • 库存管理(IM)跟踪书籍库存。
  • 支付网关(PG)处理支付事务。
  • 书籍数据库(BD)存储书籍信息和库存数据。

<5>在在线书店系统中,“支付网关(PG)”组件的主要功能是什么?

<6>如果在线书店系统需要添加一个新的功能,允许用户撰写和阅读书籍评论,请设计相应的组件

复习题答案

<1> B. 静态

<2> B. 组件

<3>A. 实现

<4>B. 接口

<5>

  • 接收支付请求:当用户完成购物并选择支付方式后,支付网关接收来自用户界面的支付请求。
  • 验证支付信息:支付网关验证用户提供的支付信息,如信用卡详情、支付金额等。
  • 与银行或支付服务提供商交互:支付网关与外部银行系统或支付服务(如PayPal、Stripe等)进行通信,以完成支付处理。
  • 确认支付结果:支付网关将支付结果(成功或失败)返回给订单处理组件,以便更新订单状态。
  • 安全性保障:确保所有支付信息的安全传输和处理,遵守相关的支付卡行业(PCI)标准。
  • 提供支付日志和报告:记录所有支付活动的细节,为审计和报告目的提供数据。

<6>新组件名称:评论管理(Review Management)

  • 主要功能:
    • 评论提交:允许用户提交书籍评论,并将其存储在系统中。
    • 评论检索:提供接口供用户检索和阅读书籍评论。
    • 评论存储:将评论数据存储在数据库中,与书籍信息和用户信息相关联。
    • 评论审核:对用户提交的评论进行审核,确保评论内容符合规定标准。
    • 用户反馈:允许用户对评论进行点赞或报告不当内容。
  • 与其他组件的关系:
    • 用户界面(UI):评论管理组件将与用户界面组件交互,提供评论提交和显示的界面。
    • 书籍数据库(BD):评论管理组件将与书籍数据库组件交互,存储和检索与书籍相关的评论。
    • 订单处理(OP):如果评论与特定订单相关,评论管理组件可能需要与订单处理组件交互,以获取订单详情。


<7>贵人:部署图Deployment Diagram

1.定义

   - 部署图(Deployment Diagram)描述了系统的物理架构,包括硬件节点和在这些节点上运行的软件组件。它展示了系统的硬件配置、硬件部署以及软件如何部署到网络结构中。

2.构成元素

【1】节点(Node)**:代表运行时的物理对象,如服务器、数据库服务器等。节点通常用立方体表示,处理器节点带阴影,设备节点不带阴影。


【2】节点实例(Node Instance)**:表示特定节点的一个实例,名称会有下划线,并且节点类型前会有冒号。

 【3】构件(Artifact)**:软件开发过程中的产物,如源代码、可执行程序、文档等。构件通常用带有关键字«artifact»和文档图标的矩形表示。

构件vs节点

 - 构件表示软件部件,节点表示硬件部件。构件是参与系统执行的事物,而节点是执行构件的事物。


【4】连接(Association)**:表示节点之间的通信路径,可以是协议如TCP/IP、HTTP等。
【5】处理器(Processor)**:具有计算能力的节点,可以执行软件组件,如服务器。
【6】设备(Device)**:不具有计算能力的节点,通过接口提供服务,如打印机、扫描仪。

3.用途

  •    描述一个具体应用的主要部署结构。
  •    平衡系统运行时的计算机资源分布。
  •    描述组织的硬件网络结构或嵌入式系统的多种硬件和软件相关的系统运行模型。

 复习题

<1>在UML中,部署图主要用于展示以下哪项内容?

A. 系统的静态结构 B. 系统的动态行为 C. 系统的物理架构 D. 系统的功能需求

<2>UML部署图中,以下哪个选项不属于部署图中的事物?

A. 节点(Node) B. 构件(Artifact) C. 用例(Use Case) D. 组件(Component)

<3>在UML部署图中,以下哪个选项正确描述了构件实例与节点的关系?

A. 每个构件实例必须部署在多个节点上

B. 一个节点可以包含多个构件实例

C. 构件实例不能与节点分开

D. 节点是构件实例的抽象表示

复习题答案

<1>C. 系统的物理架构

<2>C. 用例(Use Case)

<3>B. 一个节点可以包含多个构件实例


 <8>常在:通信图/协作图【Communication Diagram】

1.定义

 - 通信图用于描述一组对象在协作过程中如何互相通信,强调对象在交互中承担的角色,侧重于展示对象之间的关系。通信图是序列图的变体,强调对象间的关系。它在详细设计阶段用于展示对象间的交互结构。

2.构成元素

【1】对象(Object)**:

- 对象的基本表示形式与顺序图中的对象相同,都是类的实例。
- 对象在通信图中的位置没有限制,且不表示对象的创建与销毁。

-图形为一个方框,加了“:”之后就变成实例化对象


【2】链(Link)**:表示对象之间的关系或连接,用于描述消息传递的路径。

 - 链是关联的实例,用于连接对象并传递消息,若两个对象需要发生交互,必须先建立链。

【3】消息(Message)**:

- 消息需要附加在对象之间的链上,通过链连接的两个对象之间才允许在交互执行过程中进行消息传递。
   - 短箭头上方的阿拉伯数字表执行顺序。

3.画message

<1>先画两个对象

<2>画association

<3>右击选择消息,点击黑框或者绿框,你自己根据情境选择

或者可以把类实例化变成对象之后再进行message的连接,加了“:”之后就变成实例化对象

4. 特征

    - 通信图可以表示多态性,展示不同类型的对象如何响应同一消息。
    - 通信图可以表示同步和异步消息,通过特定的箭头和符号来区分。

复习题

假设我们正在设计一个电梯系统,该系统需要处理用户的楼层请求,并根据请求调度电梯。系统包括队列(RequestQueue)、电梯(Elevator)、命令、楼层控制器(FloorController)、按钮(Button)等组件。用户通过按钮发出请求,楼层控制器接收请求并调度电梯,电梯根据命令执行上下行操作。

  • 用户调用按钮的nextJob()方法发出请求。
  • 按钮调用楼层控制器的create()方法创建一个新的请求。
  • 楼层控制器调用队列的push()方法将请求添加到队列中。
  • 楼层控制器根据队列中的请求调用电梯的getElevator()方法分配电梯。
  • 电梯根据楼层控制器的命令执行moveUp()moveDown()方法。

<1>请你根据描述画出协作图


阅读以下读者借阅图书用例的协作图,完成习题:

<2>图上用户界面类是:

A 借书窗口       

B 图书信息

C 图书借阅信息   

D 图书管理员

<3>检查借阅信息这几个消息的时间序列

选择书籍 / 添加借阅图书信息 / 显示借阅记录 / 提交借书证和书籍

<4>本图中有哪些消息需要循环发送?

复习题答案

<1>

<2>A  用户界面类负责IO,和参与者有交互的类  看消息标注上的前缀

<3>提交借书证和书籍 ----- 选择书籍 ----- 添加借阅图书信息 -----显示借阅记录

<4>*[所有想要借的图书]选择书籍()


<9>常在:定时图Timing Diagram

  1.定义

- 定时图用于展示对象状态随时间的变化,以及对象间的交互和事件的时序关系,特别适用于分析并发系统和实时系统。

--定时图描述对象间交互的时间约束。它在需要精确时间控制的系统中使用,如实时系统。

2.构成元素 

   【1】时间轴(Time Axis)**:展示时间的流逝,通常是水平方向。
   【2】生命线(Lifeline)**:代表系统中的一个元素,如一个对象或组件,在定时图中通常是垂直方向展示。

 - 生命线结束表示对象完成了其生命周期内的所有行为。


   【3】状态(State)**:展示生命线上对象在特定时间段的状态。
   【4】时间约束(Time Constraint)**:指定状态持续时间或事件发生的具体时间。

   【5】事件(Event)**:表示在特定时间点发生的事情,可以是发送或接收消息,也可以是状态的变更。

  【6】条件事件(Conditional Event)**:表示基于特定条件的事件,条件可以是布尔表达式,当条件为真时事件发生。

  【7】时间段(Time Interval)**: 表示一个时间段,在这段时间内对象保持特定的状态或执行特定的活动。

  【8】同步条(Synchronization Bar)**: 表示多个对象在特定时间点的同步操作,通常用一条粗线表示。

  【9】销毁(Destruction)**:表示对象在某个时间点被销毁,可以用一个“X”标记在生命线上。

  【10】创建(Creation)**:表示对象在某个时间点被创建,可以用一个空心圆圈标记在生命线上。

  【11】自事件(Self-Event)**: 表示对象内部发生的事件,通常用一个指向自身的箭头表示。

  【12】组合片段(Interaction Fragments)**:用于表示消息序列中的选择、迭代和并发等复杂行为。

3. 用途

   - 定时图特别适用于分析并发控制和时间依赖的行为设计。
   - 定时图与其他交互图(如顺序图和通信图)的主要区别在于它强调时间因素,而顺序图强调消息的时间顺序,通信图强调对象间的组织结构。

复习题

<1>UML定时图主要用于表示什么?

A. 类之间的关系        

B. 对象状态随时间的变化        

C. 系统的物理部署        

D. 用例的实现细节

<2>在UML定时图中,时间轴通常是如何表示的?

A. 垂直方向         B. 水平方向         C. 对角线方向         D. 无固定方向

<3>生命线在UML定时图中代表什么?

A. 事件         B. 操作         C. 对象或组件         D. 用例

<4>下列哪个不是UML定时图的基本组成部分?

A. 时间轴         B. 状态

上一篇:CDGA|数据治理:数据仓库”建设投入大、周期长怎么办?


下一篇:AspNetCore全局异常处理