一次交互就是指在特定语境中,为了实现某一个目标,而在一组对象之间进行交换的一组消息所表示的行为。
输入用户名、发送短信
2. 在UML 2.0中定义了哪四种交互图?其中强调控制流时间顺序的是哪一种交互图?哪两种是基本交互图?
顺序图、通信图、定时图、交互概述图 强调控制流时间顺序的是顺序图 顺序图和通信图是两种基本交互图
3. 在顺序图中和在通信图中,分别应该如何表示“循环”结构的? 在顺序图中,循环结构可以使用一个交互片断来表示
在通信图中,使用迭代标记来表示循环。迭代是通过在顺序编号前加上一个迭代符“*”和一个可选的迭代表达式来表示的。对于迭代表达式,UML没有强制规定什么语法,因此你可以使用任何可读的、有意义的表达式来表示
4. 在交互图中,消息编号有哪两种形式?请分别说明它们的优缺点。
一种是无层次编号,它简单直观;另一种是嵌套的编号,它更易于表示消息的包含关系。 5. 在交互图中,表示返回消息的符号是什么?表示异步消息符号是什么,异步消息指的是什么意思?
返回消息符号: 异步消息:
异步模式:对象A发送了一个信号给对象B,那么A在发送完信号之后,就会继续执行,不会等待
6. 假设有一系统的协作图局部如图7-29所示,print方法的功能是将传入参数的值打印在屏幕上;fact方法是用来计算阶乘的,test的初值为1。那么将打印出什么?
1: print(test)*[i=1..3]1.1: test=test+fact(test):A:B 图7-29 协作图局部
打印的值是9。将执行三次迭代,因此test的值是1!+2!+3!=9. 7. 根据以下Java源程序绘制出相应的顺序图:
public class Payroll {
private PayrollDB itsPayrollDB;
private PayrollDisposition itsDisposition;
public void doPayroll() {
List employeeList = itsPayrollDB.getEmployeeList();
for (Iterator iterator = employeeList.iterator();iterator.hasNext();) {
String id=(String)iterator.next();
Employee e=itsPayrollDB.getEmployee(id); if(e.isPayDay()) {
double pay=e.calculatePay();
double deductions=e.calculateDeductions(); itsDisposition.sendPayment(pay-deductions);
} }
8. 根据以下Java源程序绘制出相应的顺序图和通信图:
public class Sale { private List
:Caller1: do(x)alt:A:B:C[x<10]2: calculate(x)[else]3: calculate(x) 图7-30 顺序图示例
10. 定时图的作用是什么?请简单说说它和顺序图的区别。
11. 有一个咖啡壶,它是由抽水泵和加热板所组成的。它的规则是,在抽水泵打开和加热板打开之间必须至少隔10秒钟。当储水容器变空时,抽水泵就要关闭,而回热板继续保持加热,但不能够超过15分钟。
请使用定时图来表示这一规则。
12. 图7-31是一个电梯控制系统的通信图,其中Elevator表示电梯,Queue表示指令队列,Order表示指令,Elevator Control是电梯控制器,Button是电梯上的按钮。请简解释该协作图的含义:
:Queue1.1: *[all queues] len=Length()1.3:Invoke(job)2: nextjob=Get.job():Elevator:Elevator Control《parameter》job《local》next job1.2: Create():Order1: getElevator(floorid):Button1: Push()图7-31 通信图示例
第8章 活动图
1. 活动图和顺序图之间有什么区别?它们的特点是什么,请结合实际的建模需要简要说明。
2. “在活动图中,可以根据自己的需要,有多个初始节点和活动终点”,这一描述是否正确,请说明原因以及它们各自的图形表示法。
3. 分岔和分支有什么区别,分别适用于什么样的建模目标? 4. 在活动图中,监护条件有什么用?请举例说明。
5. 如果我们想在活动图中,表示出一个如下所示的for循环,该如何做?请用活动图来表示:
for (i=0;i<9;i++)
假设,要表示的是对某个集合对象进行遍历访问,那么又应该怎么做?
6. 在图8-19中,(a)和(b)中那条“粗线段”表示的是分岔还是汇合,是否存在什么错误?
(a)图8-19 分岔与汇合
(b)
7. 在活动图中泳道要怎么表示,在需要表示什么信息时,需要用到它?
8. 如果要表示出某个活动节点的输入参数和输出参数,那么应该如何做?如果还要表示异常的输出信息,则应该如何做?
假设有一个活动节点,其功能是求最大值,要求传入两个实数,返回较大的那个,如果输入的不是实数,则抛出异常。请用活动图来表示它。
9. 在图8-20中,有一个表示某公司销售过程的一张活动图,请阅读并说明该图所表示的含义。
收到订单准备货物[其他][加急]开具发票普通包裹EMS收款关闭订单 图8-20 简单活动图
10. 假设订单的接收与关闭是由销售人员负责,开票收款是由财务人员负责,准备货物是由仓管负责。请将其修改成为带泳道的活动图,以体现这种分工。
11. 假设,我们希望在活动图中体现出:仓管人员是根据“订单”来准备货物的,因此销售人员在收到订单后,必须将订单传给仓管人员。应该采用什么机制?请直接修改活动图。
12. 在公司运转一段时间后,财务人员对该流程提出了置疑,反应说收款工作经常滞后,客户总是在收到货物后的很长时间才付款。因此必须加以改进。请根据图8-20和问题提出一个合理的修改意见,并用活动图表示出来。另外,请保持问题11所做的修改,并对新流程做出相应的体现。
13. 随着该公司的客户量的增长,客户的涉及面也变得越来越广,在发货时不仅有包裹、EMS,还有空运、集装箱等不同的手段。但如果直接在图8-20中做修改,就会降低图的可读性,这时可以采用什么样的建模手段。
14. 随着订单的增大,有时对一个订单,可能需要进行多次发货,这种业务逻辑应该如何用活动图建模。请用一个活动图来表述。
15. 活动图主要的应用场景可以分为哪两类,请简要说明它们的区别,并举一些实际的案例来说明。
第9章 交互概述图
1. 交互概述图有哪两种形式,它们分别适用于什么场景?相对而言,哪一种会更加常用一些?
一是活动图的变体,它将活动节点进行细化,用一些小的顺序图来表示活动节点内部的对象控制流;二是顺序图的变体,它用活动图来补充顺序图。但相对而言后者是十分不常见的,因此UML的定义更倾向于将其称为活动图的变体。
2. 在交互概述图中,嫁接在活动图上的顺序图片断是用什么方法来表示的? 交互片断
3. 请简要说明交互概述图在建模时的优点和缺点。
优点:充分结合交互图和活动图的长处,在表达了对象到对象的控制流的同时,充分展示了从活动到活动的控制流。
缺点:对于规模稍大的场景,它并不是一个很好的选择,它将使模型的可读性大大降低 4. 请简要描述交互概述图的绘制方法。 理解活动控制流,并用活动图表示出来; 分析活动节点:用交互图表述细节。
5. 请对ATM机的取款过程,制作一张交互概述图。
第10章 状态图
1. 什么是状态,对象的状态和对象的属性有什么区别? 2. 在状态机图中,状态由哪五个部分组成?
3. 图10-17是一个某系统关于用户管理的状态机图,请阅读该图并说明其含义。
新增用户已添加禁用用户已禁用删除激活激活禁用用户已激活用户已删除删除删除
图10-17 用户管理状态机图
4. 在图10-17中,所涉及的所有转换都属于什么类型?在UML状态机图中共提供了哪几种转换类型。
5. 在转换上标识的文字称为什么?它由哪几个部分组成?其中事件分为哪几类,请分别以一个例子来说明。
6. 如果要在图10-17的基础上表达下述业务逻辑,应该对这张状态机图做哪些修改: