1. 请指出UML的三个主要的特性。 1)UML是一种语言 2)UML是用来建模的 3)UML是统一的标准
2. 请指出三种以上现实生活中的常用模型,并说明它们分别在各自的领域中发挥了什么样的作用。
1)电路图:电子产品设计、生产、维修
2)园区沙盘:直观、立体化地展示园区的景观、布局 3)地图:导航、指路等
3. 请简要说明建模的意义和建模的原则。
建议能够帮助我们按照实际情况或按我们需要的样式对系统进行可视化;提供一种详细说明系统的结构或行为的方法;给出一个指导系统构造的模板;对我们所做出的决策进行文档化
在建模时应遵循以下原则:选择要创建什么模型对如何动手解决问题和如何形成解决方案有着意义深远的影响;每一种模型可以在不同的精度级别上表示;最好的模型是与现实相联系的;单个模型是不充分的。对每个重要的系统最好用一组几乎独立的模型去处理
4. 请说明蓝图和草图的区别,并简单描述其适用的场景。
蓝图一般是指采用CASE工具绘制的、正式的、规范的UML模型;而草图则通常是指手工绘制的、规范度较低的在纸张的UML模型。
对于局部的、重要性不高的、共享范围较小的UML模型,直接将草图扫描到电脑存档即可;对于全局的、重要性高的、高度共享的,在草图的基础上用CASE工具绘制成为正式的蓝图,并将其纳入统一的模型管理中 5. 说明UML适用的建模领域,以及其作用和主要的参与人员。
业务建模:用来加强对业务领域的了解,以领域专家为主,需求分析人员是主力, 系统分析员、架构师可参与。
需求模型:用来加强需求了解,便于技术决策,以需求分析人员为主,系统分析 员是主力,领域专家提供指导,架构师和资深开发人员参与。 设计模型:包括高层设计模型和详细设计模型。高层设计模型以架构师为主,系 统分析员从需求方面提供支持,资深开发人员从技术实现方面提供支 持。详细设计模型则以资深开发人员为主,架构师提供指导。 实现模型:架构师、资深开发人员(设计人员);以资深开发人员(设计人员) 为主,架构师提供总体指导。
数据库模型:架构师、数据库开发人员、资深开发人员;以数据库开发人员为主, 架构师提供指导,资深开发人员予以配合。 6. UML是一种方法论吗?并简要说明理由。
UML不是方法论。它仅仅是一种描述模型的标准语言,虽然渗透了许多方法论的基础概念,但是却没有在标准中给出完整的方法指南。 7. 请简要说明UML和面向软件开发之间的关系。
UML和面向对象软件开发之间有很强的关联关系,甚至可以说是面向对象软件开发催生了UML。但是由于在UML的标准化和发展过程,有机地吸纳了业务建模、工作流建模、数据库建模等领域的标准规范,形成了一个适用性很强的标准。
8. 请简要阐述在软件开发过程中使用UML的必要性以及好处。
软件开发是一个很复杂的工程,而采用统一的建模语言来对软件进行描述能够使客户、涉众、开发人员对软件能够有更好的共识,也能够有效地降低复杂性。
第2章 UML世界的构成
1. UML是由哪三个部分组成的,请分别说明它们的作用。 基本构造块:也就是建模元素,是模型的主体
UML规则:也就是支配基本构造块如何放在一起的规则 公共机制:运用于整个UML模型中的公共机制、扩展机制
2. 请列举出三个以上UML中的事物构造块,并说明适合用来表示“系统向用户提供的功能”的构造块是什么。
结构事务、行为事物、分组事物、注释事务。
适合用来表示“系统向用户提供的功能”的构造块是用例。
3. 如果你想对一个类的意义进行描述,那么应该采用 ?请简要说明原因。 A. 标记值 C
标记值是用来为事物添加新特性的;规格描述用来对构造块的语法和语义进行文字叙述,使得可视化视图和文字视图的分离;构造型是用来增加新事物的。 而对于类的意义进行简单描述,最合适的显然还是注释。
4. 图2-26所示的符号表示的是什么?它是关系构造块还是事物构造块?
图2-26 示例符号 扩展关系,是关系构造块。
5. 可以包含其它事物构造块的构造块是什么?它属于什么类型的事物构造块? 可以包含其它事物构造块的构造块是包,它属于分组事物构造块。 6. 在UML中定义了哪几种可见性规则?其中package的含义是什么? 定义了public、private、protected、package,package是指只有声明在同一个包中的元素才能够看到该元素。
B. 规格描述
C. 注释
D.构造型
7. 规格描述是一种事物构造块吗?如果不是,它是什么?它的作用是什么? 规格描述不是事物构造块,它是UML四种公共机制之一,用来对构造块的语法和语义进行文字叙述,使得可视化视图和文字视图的分离。
8. 标记值的作用是什么?它的表示法和约束的表示法有什么异同?在UML模型中如何区分它们?
标记值是用来为事物添加新特性的。约束的表示法和标记值法类似,都是使用花括号括起来的串来表示,不过它是不能够放在元素中的,而是放在相关的元素附近。
9. 构造型的作用是什么?如果我们采用一个自定义的图标来表示它,那么可能遇到的主要问题是什么?
构造型用来定义一些特定于某个领域或某个系统的构造块。用自定义的图标有两个问题:一是容易产生歧义,二是建模工具难以支持。 10. 约束有两种表示法,它们分别是什么?
约束的内容可以以自由形式的文本来表示,也可以使用UML的OCL(对象约束语言)来精确定义。
11. UML 2.0在UML 1的基础上新增了三种图,请指出它们的名称和作用。 1)复合结构图:描述类的运行时刻的分解 2)定时图:描述对象之间的交互,重点在于定时 3)交互概观图:是一种顺序图与活动图的混合
12. 在UML 2.0中定义了四种交互图,其中强调对象调用顺序的是什么图? 顺序图
13. 交互概观图是哪两种图的综合。 顺序图与活动图
14. 请绘制出类、用例和协作的图形符号。
图形位置颜色Draw()管理用户
15. 在RUP的“4+1”视图中,这个1表示的是什么,它有什么作用。 这个1是用例视图。它是最基本的需求分析模型,是可被最终用户看到的系统行为的用例组成。常用的模型包括用例图、交互图、状态图、活动图等 16. 适用于模型管理的是哪张图。 包图
第3章 UML概述
1. 绘制一个表示类的UML元素,并指出它主要包含哪三个部分。 类名、属性、操作
2. 在对类名、属性/方法名时,通常会遵循什么样的规则?请举例说明。 对于类名通常采用CamelCase格式(大写字线开头、混合大小写,每个单词以大写开始,避免使用特殊符号),尽可能避免使用缩写,例如OrderDetail。 属性名也采用CamelCase格式,但为了与类名进行区别,通常首字母以小写开头,例如productId。
操作名的命名格式与属性名类似,不过通常是动词词组。 3. 假设类ClassB是ClassA的子类,其中ClassA的属性和方法如图3-30所示,则ClassB能够访问的有哪些? 子类只有private的成员无法访问,因此可以访问的属性有mem02和mem03,可以访问的方法有op1。
图3-30 ClassA表示
4. 在图3-31中,是一个仓库管理系统的类模型局部,其
中IncomeOrder是指入库单,OrderItem是指入库中的每一项,Product则是产品信息。请指出模型中的错误,说明原因并改正错误。
IncomeOrder11ProductOrderItem
图3-31 仓库管理系统类模型局部
根据题意和模型不难得知,一个入库单是由多个入库单项(OrderItem)组成的,因此不可能只涉及一个产品,合理的方式应该是入每个入库单项(OrderItem)与产品一对一关联。即应该绘制为:
IncomeOrderOrderItem11Product
5. 在图3-32中是一个“涉税服务管理效能管理系统”中类模型的一个局部,请根据该图回答以下问题。
窗口人员核查人员审批人员处理人11流转记录0..n0..n110..n受理资料受理提示1纳税人10..n税务审批服务申请受理告知10..n行政许可类申请行政审批类申请涉税服务类申请 图3-32 涉税服务效能管理系统类模型局部
在描述“税务审批服务申请”时,它主要包含哪几个方面的内容?它有几种不同的类别?
受理资料、受理提示、受理告知、纳税人、流转记录。 包括行政许可类申请、涉税服务类申请和行政审批类申请三类。
对于每一条流转记录,可能与几个“税务审批服务申请”相关?与几个处理人相关?
每条流转记录只和一个“税务审批服务申请”相关,只与一个处理人相关。 6. 在图3-32中,对于每个流转记录的处理人它的类型(窗口人员、核查人员、审批人员)是唯一的,也就是只可能取一种值。请在图中加上表示这种规则的约束。
窗口人员核查人员审批人员{xor}处理人11流转记录0..n0..n110..n受理资料受理提示1纳税人10..n税务审批服务申请受理告知10..n行政许可类申请行政审批类申请涉税服务类申请 7. 后来,开发人员又在图3-32的基础上进行了一些修改,其中有一个局部修改成了如图3-33的内容。请说明这些新增加的元素分别表示什么含义。
has是关联名称,表示这种关联是“拥有”关系。 “申请ID”是限定符,表示每一个流转记录只能用一个“申请ID”。
8. 根据对象所表示的内容不同,可以将对象分为哪两大类?请分别举出几个例子。
引用对象和值对象。客户、产品、订单都是引用对象的例子,日期、重量、高度等对象都是典型的值对象。
9. 嵌套类的概念是什么意思?如果类Student包含类Score,请使用你学过的、支持嵌套类的面向对象编程语言将其表示出来。 将一个类的定义放在另一个类定义的内部。
public class Student { private class Score {
… } }
10. 请简要解释主动类的概念,并说明它建模的意义,并通过1-2个实例来说明,主动类可以用来表示哪些设计元素。
主动类的实例称为主动对象,一个主动对象拥有一个控制线程并且能够发起控制活动;它不在别的线程、堆栈或状态机内运行,具有独立的控制期。从某种意义上说,它就是一个线程。
例如Socket服务器的监听线程就可以表示为主动类。 11. 以使用OCL语言来表示以下含义:
在类examinee(考生)中,字段result(成绩)的值大于零,小于75分(满分)。 examinee:result>0 and result<75
在类Order中,其包含的支付信息是用其它类来表示,要么是表示货到付款的类AfterBill,要么是网上转账的类BeforeBill。 AfterBill xor BeforBill
12. 请简要说明类图的应用领域,并重点说明在软件系统建模应用时的三种模型的关键点及区别。
类图主要可以应用于业务性模型、软件系统模型和数据库逻辑模型。类图应用于软件系统模型时,主要是用来构建领域模型、分析模型和设计模型:
领域模型是从面向对象的视角看待现实世界的结果,也就是通过类图来描述现实世界中各种事物的关系。因此在构建这个模型时,最主要的工作是找出相关的类,然后明明类之间的关联关系,必要时加入一些多重性描述和业务规则约束。
图3-33 修改后的模型局部
分析模型和领域模型是很相近的,甚至可以说领域模型是一种全局的业务分析模型。而在RUP中,分析模型主要是针对软件系统的分析,领域模型则更多是偏重对业务领域的分析。
设计模型则是在分析模型的基础上添加设计元素的结果。与分析模型相比,设计模型中的类的属性集更趋完善;更重要的是,它将加入模板类、参数类、抽象类/接口等设计元素,以及框架类的使用、设计模式的使用等。总的来说,设计模型是一种详细设计模型,将能够直接对编程予以指导。
13. 图3-34是小张绘制的一张关于网上商城用户管理的领域类图,但其中存在一些问题,请指出错误并说明理由。
LoginManagerArrayListUserAccountUserPreferencesAccountInfoUserPreferencesInfoSystem.Data.Oracleclient
图3-34 网上商城用户管理领域类图局部
作为领域类图不应该涉及到实现类,因此不应该引入诸如System.Data.Oracleclient和ArrayList之类与程序实现直接相关的类。
14. 在绘制类图时,第一步就是发现类,最常用的方法是什么?请简要说明它的使用方法。
发现类的方法有很多种,其中最广泛应用的莫过于“名词动词法”,其主要规则是从名词与名词短语中提取对象与属性;从动词与动词短语中提取操作与关联;而所有格短短语通常表明名词应该是属性而不是对象。
15. 复合结构图主要包括哪两个部件?如图3-35所示的部件,其各部分表示什么?含义是什么?
(3)light:Control(1)(2)1
图3-35 复合结构图图例
(1)角色名
(2)类型 (3)多重性
16. 根据以下系统描述,绘制出最初的类模型。
该系统为指纹门禁系统,它包括四个主要部件:主机、锁控器、指纹采集器和电控锁。系统中的每个电控锁都有一个惟一的编号。锁的状态有两种:“已锁住”和“未锁住”。主机上可以设置每把锁的安全级别以及用户的开锁权限。只有当用户的开锁权限大于或等于锁的安全级别并且处于“已锁住”状态时,才能将锁打开。 用户的指纹信息、开锁权限以及锁的安全级别都保存在主机的数据库中。用户开锁时,只需按一下指纹采集器。指纹采集器将发送一个中断事件给锁控器,锁控器从指纹采集器读取用户的指纹并将指纹信息发送到主机,主机根据数据库中存储的信息来判断用户是否具有开锁权限,若有且锁当前处于“已锁住”状态,则将锁打开;否则系统报警。
第6章 用例图
1. 请列举出两种以上现代需求分析技术,并简要地说明它们的特点。
用例:描绘一个系统外在可见的需求情况,是代表系统中各个项目相关人员(风 险承担人,Stakeholder)之间就系统的行为所达成的契约
用户故事:由客户参与编写,说明他们需要系统为他们做什么,一般用客户的术 语编写,其长度约为三句话左右 特性:就是一个小的,具有客户价值的功能
2. 在用例图中参与者是什么,它属于系统范围之内吗?
参与者是为了完成一个事件而与系统交互的实体,它不属于系统范围之内。 3. 用例和使用场景之间是什么关系?与协作又是什么关系?
用例是由一组用例实例组成的,用例实例也就是常说的“使用场景”,而协作是用例的实现。
4. 用例之间的扩展、泛化、包含三种关系有什么异同,请分别举例说明。 扩展关系:基用例是可以独立于扩展用例存在的,只是在特定的条件下,它的行 为可以被另一个用例的行为所扩展
包含关系:被包含的用例(此例中的检查座位详情)不是孤立存在的,它仅作为 某些包含它的更大的基用例(此例中的预订座位、安排座位)的一部 分出现
泛化关系:用来表示参与者与参与者之间,用例与用例之间的特殊/一般化关系 5. 一个用例的描述,最基本的部分有哪些。
用户描述、用例名称、用例概述、主参与者、基本事件流
6. 对于一个电子商务网站而言,以下哪些不是合适的用例,指出并说明理由。 输入支付信息 将商品放入购物车 结账 预订商品 用户登录 邮寄商品 查看商品详情 输入支付信息:太小
邮件商品:系统功能之外 查看商品详情:太小
7. 用例分析技术和结构化分析相比,最大的区别是什么?请简要地说明它们之间的关系。
用例分析技术最大的特点是从用户的角度来分析、组织需求。而结构化分析更多是从系统的结构上进行分析。
8. 为了满足物业中介行业的信息化要求,甲公司基于详尽的需求调研与分析,准备研发一套符合市场需要的、实用的信息管理系统。主要将实现客户资料信息管理、客户委托(出租、出售、租赁、购买)信息管理、业务线索生成与管理、房源状态自动更新、权限管理、到期用户管理、房源组合查询等功能。该公司小王,通过多次的与潜在客户的交流与沟通,完成了最初的用例模型的开发,图6-14是一个用例模型的局部:
打开房源信息页面< 图6-14 物业管理系统用例模型局部 (1)但小李认为该模型不符合“用例建模”的思想,存在明显的错误。请用200字以内说明错误所在,并说明应该如何修改。 1)主要错误:用例的分解太细,并没有遵从每个用例为用户传递一个有价值的结果的原则。在原设计中“打开房源信息页面”、“录入房源信息”、“确认提交信息”都只是一个操作步骤,因此不适合作为用例。 2)修改方法:将“打开房源信息页面”、“录入房源信息”、“确认提交信息”合并为“新增房源信息”。 (2)在上图中构造型“《include》”表示的是什么意思,它与“《extent》”之间的区别是什么? 在用例模型中,构造型“《include》”是用来表示包含关系。它通常用来表示被包含用例是被多包含用例使用的一个可复用模块,而《extent》且通常用来表示对用例的扩展。 9. 请为图6-4中的用例“预订座位”(以及它包含的用例“检查座位信息”和扩展用例“处理等候队列”)编写用例描述, 10. 说明用例模型是如何转变成设计模型的,试着结合自己的开发实践来说明。 第7章 交互图 1. 交互是什么?请举2-3个交互的实际例子。 一次交互就是指在特定语境中,为了实现某一个目标,而在一组对象之间进行交换的一组消息所表示的行为。 输入用户名、发送短信 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-deducti ons); } } 8. 根据以下Java源程序绘制出相应的顺序图和通信图: public class Sale { private List :Caller1: do(x)alt[x<10]2: calculate(x)[else]:A:B:C3: 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)《parameter》job《local》next job1.2: Create():Order2: nextjob=Get.job():Elevator:Elevator Control1: 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. 活动图主要的应用场景可以分为哪两类,请简要说明它们的区别,并举一些实际的案例来说明。 第10章 状态图 1. 什么是状态,对象的状态和对象的属性有什么区别? 2. 在状态机图中,状态由哪五个部分组成? 3. 图10-17是一个某系统关于用户管理的状态机图,请阅读该图并说明其含义。 新增用户已添加禁用用户已禁用删除激活激活禁用用户已激活用户已删除删除删除 图10-17 用户管理状态机图 4. 在图10-17中,所涉及的所有转换都属于什么类型?在UML状态机图中共提供了哪几种转换类型。 5. 在转换上标识的文字称为什么?它由哪几个部分组成?其中事件分为哪几类,请分别以一个例子来说明。 6. 如果要在图10-17的基础上表达下述业务逻辑,应该对这张状态机图做哪些修改: 1)当用户删除后,还要自动完成该用户数据的备份,并从系统中清除,假设我们可以调用deleteAllData(username)方法来实现。 2)假设用户在“已激活”状态,可以响应“备份”命令,并调用backData()方法来完成。 3)假设用户在进入“已禁用”状态,将调用lockData()方法将其所属的信息设置为禁止访问,而将其解禁后,则调用unlockData()方法将其恢复。 7. 在状态机图中,自身转换和内部转换的区别是什么?请举例说明。 8. 复合状态可以分为哪两种类型,在图形表示时它们的主要区别是什么。 9. 假设我们要将图10-17中状态“用户已禁用”和“用户已激活”合并为“用户生效”状态,这时使用的是哪种类型的复合状态?请用嵌套的复合状态绘制出新的状态机图。 10. 在图10-18所示的状态机图中,描述了学习驾照的过程。在该图采用的复合状态是什么类型?请说明该图所表示的含义。 学习理论学习已报名理论考试自主练车教练专人指导驾驶考试获得驾照 图10-18 学习驾照过程状态机图 11. 在图10-18中,什么时候才能够从复合状态“学习”转换到“获得驾照”中。 12. 在状态“理论考试”和“驾驶考试”与其相应的终态连接的线上,应该有什么样的描述? 13. 如果要表示必须在“理论考试”通过之后,才能够安排“教练专人指导”,那么应该如何建模。 14. 阅读图10-19所示的状态机图,并说明其含义。 查看订单详情查看客户信息查看订单H列表 图10-19 页面跳转状态机图 15. 在图10-19中符号“ HH*”表示的含义是什么?那么符号“”又表示什 么?请简要说明它们的区别。 16. 绘制状态机图的常用的步骤是什么?请简要说明。 17. 某销售POS机,它的工作流程是:当客户到收银台后,收银员逐一输入用户购买的商品,输入完之后,计算出总金额,然后等待用户付款,确定支付成功之后,完成收银,等待下一个客户。请为其绘制出相应的状态机图。 18. 状态机图适用于什么场景。请分别举例说明。 因篇幅问题不能全部显示,请点此查看更多更全内容