1、计算机水平考试中级软件设计师 2006 年下半年下午真题及答案解析(总分:111.00,做题时间:90 分钟)一、B试题一/B(总题数:5,分数:20.00)1.【问题 1】 请采用说明中的词汇,给出数据确认处理所需的数据流在第 1 层图中的全部可选起点(第 0层图和第 1 层图中均未给出)。(分数:4.00)_2.【问题 2】 不考虑数据确认处理(加工 2),请指出数据流图中存在的错误。(分数:4.00)_3.【问题 3】 打印分户账清单时,必须以下列哪一组数据作为关键字进行排序,才能满足需求?请从下面选项中选择。 储蓄所 账号 开户日 总户数和总余额(分数:4.00)_4.【问题 4】 加
2、工 1(录入比对处理)除能够检查出初录数据和复录数据不一致外,还应当检测出下列哪些错误。 输入的无效字符 输入的半个汉字 显示器无法显示 初录员重复录入同一账户 汇总数据与会计账目不符 打印机卡纸(分数:4.00)_5.【问题 5】 请使用数据字典条目定义形式,给出第 0 层 DFD 中的“手工分户账”数据流和第 1 层 DFD中的“初录分户账”、“复录分户账”的关系。(分数:4.00)_二、B试题二/B(总题数:4,分数:16.00)6.【问题 1】 根据上述说明和实体-联系图,得到该住房管理系统的关系模式如下所示,请补充住宿关系。房间(房间号,收费标准,床位数目) 客人(身份证号,姓名,性
3、别,出生日期,地址) 住宿(U (1) /U,入住日期,退房日期,预付款额)(分数:4.00)_7.【问题 2】 请给出问题 1 中住宿关系的主键和外键。(分数:4.00)_8.【问题 3】 若将上述各关系直接实现为对应的物理表,现需查询在 2005 年 1 月 1 日到 2005 年 12 月31 日期间,在该宾馆住宿次数大于 5 次的客人身份证号,并且按照入住次数进行降序排列。下面是实现该功能的 SQL 语句,请填补语句中的空缺。 SELECT 住宿身份证号,count (入住日期) FROM 住宿,客人 WHERE 入住日期=20050101AND 入住日期=20051231 AND 住
4、宿身份证号=客人身份证号 GROUP BY U(2) /U U (3) /U count(入住日期)5 U (4) /U(分数:4.00)_9.【问题 4】 为提交 SQL 语句的执行效率,可在相应的表上创建索引。根据问题 3 中的 SQL 语句,除主键和外键外,还需要在哪个表的哪些属性上创建索引,应该创建什么类型的索引,请说明原因。(分数:4.00)_三、B试题三/B(总题数:3,分数:15.00)10.【问题 1】 识别关联的多重度是面向对象建模过程中的一个重要步骤。根据说明中给出的描述,完成图 10-4 中的(1)(6)。(分数:5.00)_11.【问题 2】请从表 10-2 中选择方法
5、,完成图 10-5 中的(7)(10)。B 表 10-2 可选消息列表/B功 能 描 述 方 法 名向促销订单中添加所选的商品 buyCommodities向促销中添加要促销的商品 addCommodities查找某个促销的所有促销订单信息列表 getPromotionOrders生成商品信息 createCommodity查找某个分类中某商家的所有商品信息列表 getCommodities生成促销信息 createPromotion生成促销订单信息 createPOrder查找某个分类的所有促销信息列表 getCategoryPromotion查找某商家所销售的所有分类列表 getCateg
6、ories查找某个促销所涉及的所有商品信息列表 getPromtionCommodities(分数:5.00)_12.【问题 3】 关联(Association)和聚集(Aggregation)是 UML 中两种非常重要的关系。请说明关联和聚集的关系,并说明其不同点。(分数:5.00)_四、B试题四/B(总题数:1,分数:15.00)13.【说明】某汽车制造工厂有两条装配线。汽车装配过程如图 10-6 所示,即汽车底盘进入装配线,零件在多个工位装配,结束时汽车自动完成下线工作。(1)e0和 e1表示底盘分别进入装配线 0 和装配线 1 所需要的时间。(2)每条装配线有 n 个工位,第一条装配线
7、的工位为 S0,0,S 0,1,S 0,n-0,第二条装配线的工位为S1,0,S 1,1,S 1,n-1。其中 S0,k和 S1,k(0kn-1)完成相同的任务,但所需时间可能不同。(3)aij表示在工位 Sij处的装配时间,其中 i 表示装配线(i=0 或 i=1),j 表示工位号(0jn-1)。(4)tij表示从 Sij处装配完成后转移到另一条装配线下一个工位的时间。(5)X0和 X1表示装配结束后,汽车分别从装配线 0 和装配线 1 下线所需要的时间。(6)在同一条装配线上,底盘从一个工位转移到其下一个工位的时间可以忽略不计。图 10-7 所示的流程图描述了求最短装配时间的算法,该算法的
8、输入为;n: 表示装配线上的工位数;ei: 表示 e1和 e2,i 取值为 0 或 1:aij: 表示 ai,j,i 的取值为 0 或 1,j 的取值范围为 0n-1;tij: 表示 ti,j,i 的取值为 0 或 1,j 的取值范围为 0n-1;xi: 表示 X0和 X1,i 取值为 0 或 1。算法的输出为:fi:最短的装配时间;li:获得最短装配时间的下线装配线号(0 或者 1)。算法中使用的 fij表示从开始点到 Si,j处的最短装配时间。(分数:15.00)_五、B试题五/B(总题数:1,分数:15.00)14.【说明】一般的树结构常采用孩子-兄弟表示法表示,即用二叉链表作树的存储结
9、构,链表中结点的两个链域分别指向该结点的第一个孩子结点和下一个兄弟结点。例如,图 10-8(a)所示的树的孩子-兄弟表示如图 10-8(b)所示。(分数:15.00)_六、B试题六/B(总题数:1,分数:15.00)15.【说明】 传输门是传输系统中的重要装置。传输门具有 Open(打开)、Closed(关闭)、Opening (正在打开)、StayOpen(保持打开)和 Closing(正在关闭)五种状态。触发传输门状态转换的事件有click、complete 和 timeout 三种。事件与其相应的状态转换如下图所示。 (分数:15.00)_七、B试题七/B(总题数:1,分数:15.00)
10、16.【说明】 传输门是传输系统中的重要装置。传输门具有 Open(打开)、Closed(关闭)、Opening (正在打开)、StayOpen(保持打开)和 Closing(正在关闭)五种状态。触发状态的转换事件有 click、complete和 timeout 三种。事件与其相应的状态转换如下图所示。 (分数:15.00)_计算机水平考试中级软件设计师 2006 年下半年下午真题答案解析(总分:111.00,做题时间:90 分钟)一、B试题一/B(总题数:5,分数:20.00)1.【问题 1】 请采用说明中的词汇,给出数据确认处理所需的数据流在第 1 层图中的全部可选起点(第 0层图和第
11、1 层图中均未给出)。(分数:4.00)_正确答案:()解析:初录数据、复录数据 分析 在本题说明中关于“数据确认”功能的描述中,指出当初录员和复录员分别录入的数据比对正确后,可从其中任一套数据作为最终进入系统 A 的原始数据(即图 10-2 中的确认数据)。因此无论是初录数据还是复录数据都可作为“数据确认处理”的数据源。2.【问题 2】 不考虑数据确认处理(加工 2),请指出数据流图中存在的错误。(分数:4.00)_正确答案:()解析:0 层图(图 10-2)中,数据清除处理(加工 6)没有输入数据流 分析 在 DFD 中,一个加工就是对输入数据进行处理并生成输出数据的过程,所以数据流图中的
12、每个加工都要求(至少)有一个输入数据流和一个输出数据流。而在 0 层 DFD (图 10-2)中,加工 6(数据清除)只有输出数据流而没有输入数据。3.【问题 3】 打印分户账清单时,必须以下列哪一组数据作为关键字进行排序,才能满足需求?请从下面选项中选择。 储蓄所 账号 开户日 总户数和总余额(分数:4.00)_正确答案:()解析: 分析 在表 10-1 中,多行中的数据按照储蓄所分组输出并打印该储蓄所所有分户账的户数和余额合计,这就要求在数据查询操作中,至少要按照储蓄所进行排序才能实现。当然在软件实现时,也可以按照账号、开户日等数据排序,但从表 10-1 中无法确定是否需要这些额外的排序。
13、4.【问题 4】 加工 1(录入比对处理)除能够检查出初录数据和复录数据不一致外,还应当检测出下列哪些错误。 输入的无效字符 输入的半个汉字 显示器无法显示 初录员重复录入同一账户 汇总数据与会计账目不符 打印机卡纸(分数:4.00)_正确答案:()解析:、 分析 图 10-2 中的加工 1(录入比对)包含了图 10-3 中的三个加工:初录员录入数据、复录员录入数据、两组数据比对。按照本题说明,比对的任务就是在两组已经存储在数据文件中的数据之间一一比较,并指出那些不一致者、重复录入的同一账户数据,这个加工是完全由软件完成的,不再需要用户输入数据。但在手工录入过程中,有可能输入无效字符,比如输入
14、的金额中有除小数点、数字之外的其他字符、半个汉字(这在某些运行环境中是可能存在的情况)。另外,从图 10-3 和其他叙述中可以看出,录入比对处理不涉及打印,也不应该检查汇总数据和会计账目是否相符(因为这是汇总核对的功能)。5.【问题 5】 请使用数据字典条目定义形式,给出第 0 层 DFD 中的“手工分户账”数据流和第 1 层 DFD中的“初录分户账”、“复录分户账”的关系。(分数:4.00)_正确答案:()解析:手工分户账=初录分户账+复录分户账 分析 在图 10-2 给出的软件第 0 层 DFD 中,“手工分户账”是“录入比对”加工的输入数据流,而该加工包含了图 10-3 中的“初录”加工
15、和“复录”加工。所以手工分户账由初录分户账和复录分户账组成。二、B试题二/B(总题数:4,分数:16.00)6.【问题 1】 根据上述说明和实体-联系图,得到该住房管理系统的关系模式如下所示,请补充住宿关系。房间(房间号,收费标准,床位数目) 客人(身份证号,姓名,性别,出生日期,地址) 住宿(U (1) /U,入住日期,退房日期,预付款额)(分数:4.00)_正确答案:()解析:房间号,身份证号 分析 房间号和身份证号分别是房间关系和客人关系的主键,作为外键出现在住宿关系中。住宿关系记录客人的身份证号和住宿的房间号。7.【问题 2】 请给出问题 1 中住宿关系的主键和外键。(分数:4.00)
16、_正确答案:()解析:住宿主键:房间号,身份证号,入住日期 住宿外键:房间号,身份证号 分析 该题主要考核关系的主键。住宿关系主键包括房间号,身份证号和入住日期。房间号和身份证号是较明显的答案,但仅是这两者并不能唯一识别一个记录,一位客人有可能多次在同一房间里住宿,故入住日期也要包含在主键中。8.【问题 3】 若将上述各关系直接实现为对应的物理表,现需查询在 2005 年 1 月 1 日到 2005 年 12 月31 日期间,在该宾馆住宿次数大于 5 次的客人身份证号,并且按照入住次数进行降序排列。下面是实现该功能的 SQL 语句,请填补语句中的空缺。 SELECT 住宿身份证号,count
17、(入住日期) FROM 住宿,客人 WHERE 入住日期=20050101AND 入住日期=20051231 AND 住宿身份证号=客人身份证号 GROUP BY U(2) /U U (3) /U count(入住日期)5 U (4) /U(分数:4.00)_正确答案:()解析:住宿身份证号 (3)HAVING (4)ORDER BY 2 DSC,或 ORDER BY 2 DESC 分析 该题主要考查 SQL语言。GROUP BY 后必须出现 SELECT 后查询项中不包含聚集函数的部分;GROUP BY 后跟的条件应该用HAVING 子句表示:题目要求按照入住次数降序排序,故最后应填入 OR
18、DER BY 子句。9.【问题 4】 为提交 SQL 语句的执行效率,可在相应的表上创建索引。根据问题 3 中的 SQL 语句,除主键和外键外,还需要在哪个表的哪些属性上创建索引,应该创建什么类型的索引,请说明原因。(分数:4.00)_正确答案:()解析:表:住宿 属性:入住日期 类型:聚簇索引,或聚集索引,或 cluster 原因:表中记录的物理顺序与索引项的顺序一致,根据索引访问数据时,一次读取操作可以获取多条记录数据,因而可减少查询时间。 分析 该题主要考核索引的概念。在数据库中,索引使数据库程序无需对整个表进行扫描,就可以从其中找到所需的数据。索引分为两类:聚集索引和非聚集索引。聚集索
19、引对表的物理数据页中的数据按列进行排序,然后重新存储到磁盘上,即聚集索引与数据是混为一体的,其叶结点中存储的是实际的数据。非聚集索引具有完全独立于数据行的结构,使用非聚集索引不用将物理数据页中的数据按列排序。非聚集索引的叶结点存储的是组成非聚集索引的关键字值和行定位器。 按题目要求,查询涉及的属性有身份证号和入住日期,但它们均为主键属性,故不需要再为其他属性创建索引。针对本题要求为提交 SQL 语句的执行效率,对“入住日期”属性建立聚集索引,使得索引项顺序和物理数据顺序一致以提高查询性能。 问题 3 中查询涉及到的属性有身份证号和入住日期,由于这两个属性均为住宿关系的主键,故不需要再在其他属性
20、上创建索引。在主键上创建的索引类型应为聚簇索引(或聚集索引或 cluster)。创建聚簇索引的原因是令表中记录的物理顺序与索引项的顺序一致,根据索引访问数据时,一次读取操作可以获取多条记录数据,因而可减少查询时间。三、B试题三/B(总题数:3,分数:15.00)10.【问题 1】 识别关联的多重度是面向对象建模过程中的一个重要步骤。根据说明中给出的描述,完成图 10-4 中的(1)(6)。(分数:5.00)_正确答案:()解析:(1)0n 或 1n (2)1 (3)0n (4)1n (5)1 (6)0n 分析 问题 1 主要考查类的多样性分析,在充分理解题目需求的基础上补充类图中的类间关系的多
21、样性描述。根据题目中所描述: (1)(2)一个商品(Commodity)属于一种分类,一个分类(Category)中包含零个或多个商品对象,所以多样性关系为 0n或 1n 个商品对象对应 1 个分类对象; (3)(4)一个促销(Promotion)中由一个或多个商品组成(至少一个),而一个商品可以属于零个或多个促销,所以多样性关系为 0n 个促销对象对应 1n 个商品对象。 (5)(6)一个促销可以产生多个促销订单(POrder),一个促销订单只能对应一个促销。所以多样性关系为 1 个促销对象涉及 0n 个促销订单对象。11.【问题 2】请从表 10-2 中选择方法,完成图 10-5 中的(7
22、)(10)。B 表 10-2 可选消息列表/B功 能 描 述 方 法 名向促销订单中添加所选的商品 buyCommodities向促销中添加要促销的商品 addCommodities查找某个促销的所有促销订单信息列表 getPromotionOrders生成商品信息 createCommodity查找某个分类中某商家的所有商品信息列表 getCommodities生成促销信息 createPromotion生成促销订单信息 createPOrder查找某个分类的所有促销信息列表 getCategoryPromotion查找某商家所销售的所有分类列表 getCategories查找某个促销所涉及
23、的所有商品信息列表 getPromtionCommodities(分数:5.00)_正确答案:()解析:(7)getCategories (8)getCommodities (9)createPromotion (10)addCommodities 分析 问题 2主要考查用 UML 序列图对系统的行为进行分析和建模。序列图描述对象间的消息交互,刻画系统的行为。根据题目的描述: 商家在发布促销信息时,要先浏览自己所销售的商品的分类及分类中的具体商品信息:商家通过 getCategories 消息将浏览请求提交给类 CatagoryManager 实例,再由类 CatagoryManager 的实
24、例通过 getCommodities 消息请求类 Category 实例获得其分类中该商家的所有商品:类 Category 的实例通过 getCommodityinfo 消息请求类 Commodity 的实例返回商品的详细描述信息。 当把商家所销售的商品分类及分类中的具体商品信息返回给商家之后,商家在其中选择要促销的一个或多个商品,并输入一些促销信息,通过 CreatePromotion 消息请求类 PromotionManager 实例生成促销信息。类PromotionManager 实例通过 Create 消息创建一个促销对象,并通过 addCommodities 消息向新建的促销对象中添
25、加要促销的商品对象。12.【问题 3】 关联(Association)和聚集(Aggregation)是 UML 中两种非常重要的关系。请说明关联和聚集的关系,并说明其不同点。(分数:5.00)_正确答案:()解析:关系:聚集(聚合)是关联的特例(聚集是关联的一种)。 不同点:聚集表示部分与整体关系的关联。若从生命周期的角度考虑,则关联对象的生命周期一般无必然关系,聚集的整体对象往往对部分对象的生命周期负责。 分析 问题 3 主要考查面向对象分析设计中对类之间不同关系的理解。 关系:聚集(聚合)是关联的特例(聚集是关联的一种)。 不同点:聚集表示部分与整体关系的关联。若从生命周期的角度考虑,则
26、关联对象的生命周期一般无必然关系,聚集的整体对象往往对部分对象的生命周期负责。四、B试题四/B(总题数:1,分数:15.00)13.【说明】某汽车制造工厂有两条装配线。汽车装配过程如图 10-6 所示,即汽车底盘进入装配线,零件在多个工位装配,结束时汽车自动完成下线工作。(1)e0和 e1表示底盘分别进入装配线 0 和装配线 1 所需要的时间。(2)每条装配线有 n 个工位,第一条装配线的工位为 S0,0,S 0,1,S 0,n-0,第二条装配线的工位为S1,0,S 1,1,S 1,n-1。其中 S0,k和 S1,k(0kn-1)完成相同的任务,但所需时间可能不同。(3)aij表示在工位 Si
27、j处的装配时间,其中 i 表示装配线(i=0 或 i=1),j 表示工位号(0jn-1)。(4)tij表示从 Sij处装配完成后转移到另一条装配线下一个工位的时间。(5)X0和 X1表示装配结束后,汽车分别从装配线 0 和装配线 1 下线所需要的时间。(6)在同一条装配线上,底盘从一个工位转移到其下一个工位的时间可以忽略不计。图 10-7 所示的流程图描述了求最短装配时间的算法,该算法的输入为;n: 表示装配线上的工位数;ei: 表示 e1和 e2,i 取值为 0 或 1:aij: 表示 ai,j,i 的取值为 0 或 1,j 的取值范围为 0n-1;tij: 表示 ti,j,i 的取值为 0
28、 或 1,j 的取值范围为 0n-1;xi: 表示 X0和 X1,i 取值为 0 或 1。算法的输出为:fi:最短的装配时间;li:获得最短装配时间的下线装配线号(0 或者 1)。算法中使用的 fij表示从开始点到 Si,j处的最短装配时间。(分数:15.00)_正确答案:()解析:(1)f00=e0+a00 f10=e1+a10 (2)f0j-1+a0j (3)fjj-1)+a1jf0j-1)+t0j-1+a1j, 或 f1j-1)+a1j=f0j-1+t0j-1)+a1j, 或其等价形式 (4)fi=f0n-1+x0 li=0 (5)fi=f1n-1+x1 1i=1 分析 本题考查动态规划
29、算法设计方法。 当问题具有两个特性,即最优子结构和重叠子问题时,可以考虑用动态规划求解问题。用动态规划求解问题具有四个步骤。 (1)刻画问题的最优子结构,描述问题的最优解包含子问题的最优解。对于本题来说,最短装配时间等于经过装配线。的第 n 个工位的最短装配时间加上 x0,或者等于经过装配线 1的第 n 个工位的最短装配时间加上 x1,取哪条装配线取决于哪个值更小。而经过某个装配线 0/1 的第i 个工位的最短装配时间又等于经过装配线 0/1 的第 1-1 个工位的最短装配时间,或者等于经过装配线I/0 的第 i-1 个工位的最短装配时间加上从这个工位到装配线 0/1 的迁移时间,取决于哪个值
30、更小。 (2)建立最优子结构的递归关系,这是非常关键的一步。对于本题来说,递归关系为 五、B试题五/B(总题数:1,分数:15.00)14.【说明】一般的树结构常采用孩子-兄弟表示法表示,即用二叉链表作树的存储结构,链表中结点的两个链域分别指向该结点的第一个孩子结点和下一个兄弟结点。例如,图 10-8(a)所示的树的孩子-兄弟表示如图 10-8(b)所示。(分数:15.00)_正确答案:()解析:(1)EnQueue(&tempQ,root) (2)brotherptr=brotherptr-nextbrother (3)!IsEmpty(tempQ),或其等价形式 (4)DeQueue(&t
31、empQ,&ptr) (5)!ptr-firstchild,或其等价形式 (6)EnQueue(&tempQ,ptr-firstchild) (7)brotherptr=brotherptr-nextbrother 分析 本题考查树结构的存储及遍历运算。 借助队列结构对树进行层序遍历时,每个结点都进出队列一次,结点出队列时进行访问。其过程是:首先令树根结点入队,若是森林(树根之间互为兄弟),接着则令其余树的根结点入队,然后在队列非空的情况下,队头结点出队,访问该结点同时令其孩子结点入队。以此类推,直到队列为空。队列可以保证访问结点时按照层次和自左至右的顺序。 函数中,代码“InitQueue(
32、&tempQ);U (1) /U”初始化队列并令根结点入队列,因此空(1)处应填入“EnQueue(&tempQ,root)”。 采用二叉树存储树结构时,其右分支表示兄弟关系,因此队头结点出队时,应沿右分支将队头结点的所有孩子依次加入队列。以下代码处理第一棵树的兄弟结点,如下: while (brotherptr) EnQueue(&tempQ,brotherptr); U(2) /U; /*end-while*/ 因此,空(2)处应填入“brotherptr=brotherptr - nextbrother”。这样,就完成了第一层结点的处理。 显然,空(3)处应判断队列是否为空,即填入“!I
33、sEmpty(tempQ)”。队列非空的情况下,令队头元素出队列,即空(4)处应填入“DeQueue(&tempQ,&ptr)”。这是使用队列或栈结构存储元素以实现某种运算的基本特点。 若一个结点不存在孩子,则其 firstchild 指针域为空,也无需令其孩子结点入队列。 因此,空(5)处应填入“!ptr-firstchild”。反之,若一个结点有孩子,则应首先令其第一个孩子结点入队列,然后通过右分支链使其他孩子结点入队列。因此,空(6)处应填入“EnQueue(&tempQ,ptr-firstchild)”,空(7)处应填入“brotherptr =brotherptr-nextbroth
34、er”。六、B试题六/B(总题数:1,分数:15.00)15.【说明】 传输门是传输系统中的重要装置。传输门具有 Open(打开)、Closed(关闭)、Opening (正在打开)、StayOpen(保持打开)和 Closing(正在关闭)五种状态。触发传输门状态转换的事件有click、complete 和 timeout 三种。事件与其相应的状态转换如下图所示。 (分数:15.00)_正确答案:()解析:(1)state = CLOSED | state = CLOSING (2)state = OPENING | state = STAYOPEN (3)state = OPEN (4)s
35、tate-click() (5)state-timeout() (6)state-complete() (7)door-setState(door-OPENING) 分析 本题考查的是状态转换图的程序设计与实现。 空(1)、(2)和(3)需要根据状态转换图来填写,空(1)、(2)和(3)所在的方法为 click,表示当发生 click 事件时应该发生什么状态转换。根据代码可知,发生 click 事件时,状态分别跳转到 OPENING,CLOSING 和 STAYOPEN,则发生 click 前的状态由状态转换图可以得到,分别为 CLOSED 或 CLOSING、STAYOPEN 或 OPENI
36、NG 以及 OPEN。 代码 2 中空(4)、(5)和(6)考查当发生 click、timeout 以及 complete 事件的时候,状态应该如何迁移。类 Door 的 state 成员变量用于记录类 Door 所处的状态,而 state 变量的类型为 DoorState *,DoorState 中分别具有 click、timeout 和 complete 方法用来响应对应的事件,因此,空(4)、(5)和(6)分别为:state-click()、state-timeout()和 state-complete()。 空(7)主要考查门的当前状态为 CLOSED 时,发生 click 事件时状态
37、的迁移。根据状态图可知,CLOSED 状态的在 click 事件下将迁移到 OPENING,因此,此处应该将传输门状态设置为 OPENING,DoorState 变量存储了当前其存储的传输门的实例,因此,可直接调用其方法 setState 来设置状态,由于传输门状态采用类的实例变量表示,所以此处应该填写 door-setState(door-OPENING)。 代码 1 和代码 2 的区别是:代码 2 将状态间的转换规则封装到具体的类中,当状态转换图的转换规则发生变化时,只需更改部分对应类中的状态迁移规则,而代码 1 中的迁移规则散落在程序中,维护起来较为困难。七、B试题七/B(总题数:1,分
38、数:15.00)16.【说明】 传输门是传输系统中的重要装置。传输门具有 Open(打开)、Closed(关闭)、Opening (正在打开)、StayOpen(保持打开)和 Closing(正在关闭)五种状态。触发状态的转换事件有 click、complete和 timeout 三种。事件与其相应的状态转换如下图所示。 (分数:15.00)_正确答案:()解析:(1)state = CLOSED | state = CLOSING (2)state = OPENING | state = STAYOPEN (3)state = OPEN (4)state.click() (5)state.timeout() (6)plete() (7)door.setState(door.OPENING) 分析 本题考查的是状态转换图的程序设计与实现。 空(1)、(2)和(3)需要根据状态转换图来填写,空(1)、(2)和(3)所在的方法为 click,表示当发生 click 事件时应该发生什么状态转换。根据代码可知,发生 click 时,状态分别跳转到 OPENING,CLOSING 和 STAYOPEN,则发生 click 前的状态由状态转换图可以得到,分别为 CLOSED 或 CLOSING、STAYO
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1