[计算机类试卷]2012年下半年软件水平考试(中级)软件设计师下午(应用技术)真题试卷及答案与解析.doc

上传人:wealthynice100 文档编号:493054 上传时间:2018-11-30 格式:DOC 页数:21 大小:446KB
下载 相关 举报
[计算机类试卷]2012年下半年软件水平考试(中级)软件设计师下午(应用技术)真题试卷及答案与解析.doc_第1页
第1页 / 共21页
[计算机类试卷]2012年下半年软件水平考试(中级)软件设计师下午(应用技术)真题试卷及答案与解析.doc_第2页
第2页 / 共21页
[计算机类试卷]2012年下半年软件水平考试(中级)软件设计师下午(应用技术)真题试卷及答案与解析.doc_第3页
第3页 / 共21页
[计算机类试卷]2012年下半年软件水平考试(中级)软件设计师下午(应用技术)真题试卷及答案与解析.doc_第4页
第4页 / 共21页
[计算机类试卷]2012年下半年软件水平考试(中级)软件设计师下午(应用技术)真题试卷及答案与解析.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、2012年下半年软件水平考试(中级)软件设计师下午(应用技术)真题试卷及答案与解析 一、必答题(共 4道大题,每道大题 15分) 0 阅读下列说明和图,回答以下问题,将解答填入答题纸的对应栏内。 【说明】 某电子商务系统采用以数据库为中心的集成方式改进购物车的功能,详细需求如下: 1加入购物车。顾客浏览商品,点击加入购物车,根据商品标识从商品表中读取商品信息,并更新购物车表。 2浏览购物车。顾客提交浏览购物车请求后,显示出购物车表中的商品信息。 3提交订单。顾客点击提交订单请求,后台计算购物车表中商品 的总价 (包括运费 )加入订单表,将购物车表中的商品状态改为待付款,显示订单详情。若商家改变

2、价格,则刷新后可看到更改后的价格。 4改变价格。商家查看订购自家商品的订单信息,根据特殊优惠条件修改价格,更新订单表中的商品价格。 5付款。顾客点击付款后,系统先根据顾客表中关联的支付账户,将转账请求 (验证码、价格等 )提交给支付系统 (如信用卡系统 )进行转账;然后根据转账结果返回支付状态并更改购物车表中商品的状态。 6物流跟踪。商家发货后,需按订单标识添加物流标识 (物流公司、运单号 );然后可根据顾客或商家的标识以及订 单标识,查询订单表中的物流标识,并从相应物流系统查询物流信息。 7生成报表。根据管理员和商家设置的报表选项,从订单表、商品表以及商品分类表中读取数据,调用第三方服务 C

3、rystal Reports生成相关报表。 8维护信息。管理员维护 (增、删、改、查 )顾客表、商品分类表和商品表中的信息。 现采用结构化方法实现上述需求,在系统分析阶段得到如图 1-1所示的顶层数据流图和图 1-2所示的 0层数据流图。 1 使用说明中的词语,给出图 1-1中的实体 E1 E4的名称。 2 使用说明中的词语,给出图 1-2中的 数据存储 D1 D4的名称。 3 图 12中缺失了数据流,请用说明或图 12中的词语,给出其起点和终点。 4 根据说明,给出数据流 “转账请求 ”、 “顾客订单物流查询请求 ”和 “商家订单物流查询请求 ”的各组成数据项。 4 阅读下列说明和图,回答以

4、下问题,将解答填入答题纸的对应栏内。 【说明】 某会议策划公司为了方便客户,便于开展和管理各项业务活动,需要构建一个基于网络的会议预定系统。 【需求分析】 1会议策划公司设有受理部、策划部和其他部门,部门信息包括部门号、部门名称、部门主管、电话和邮箱号,每个部 门有多名员工处理部门的日常事务,每名员工只能在一个部门工作,每个部门有一名主管负责管理本部门的事务和人员。 2员工信息包括员工号、姓名、部门号、职位、联系方式和工资;其中,职位包括主管、业务员、策划员等。业务员负责受理会议申请,若申请符合公司规定,则置受理标志并填写业务员的员工号,策划部主管为已受理的会议申请制定策划任务,包括策划内容、

5、参与人数、要求完成时间等。一个已受理的会议申请对应一个策划任务,一个策划任务只对应一个已受理的会议申请,但一个策划任务可由多名策划员参与执行,且一名策划员可以参与多项策划任务。 3客户信息包括客户号、单位名称、通信地址、所属省份、联系人、联系电话、银行账号。其中,一个客户号唯一标识一个客户。一个客户可以提交多个会议申请,但一个会议申请对应唯一的一个客户号。 4会议申请信息包括申请号、开会日期、会议地点、持续天数、会议人数、预算费用、会议类型、酒店要求、会议室要求、客房类型、客房数、联系人、联系方式、受理标志和业务员的员工号等。客房类型有豪华套房、普通套房、标准间、三人间等,且申请号和客房类型决

6、定客房数。 【概念模型设计】 根据需求阶段收集的信息,设计的实体联系图和关系模式 (不完整 )如下: 【关系模式设计】 部门 (部门号,部门名称,主管,电话,邮箱号 ) 员工 (员工号,姓名, (a) ,联系方式,工资 ) 客户 (客户号,单位名称,通信地址,所属省份,联系人,联系电话,银行账号 ) 会议申请 ( (b) ,开会日期,会议地点,持续天数,会议人数,预算费用,会议类型,酒店要求,会议室要求,客房数,联系人,联系方式,受理标志,员工号 ) 策划任务 ( (c) ,策划内容,参与人数,要求完成时间 ) 执行策划 ( (d) ,实际完成时间 ) 5 根据问题描述,补充五个联系、联系的类

7、型,完善图 2-1的实体联系图。 6 根据实体联系图,将关系模式中的 (a) (d)补充完整 (1个空缺处可能有多个数据项 )。 对会议申请、策划任务和执行策划关系模式,用下画线和 #分别指出各关系模式的主键和外键。 7 请说明关系模式 “会议申请 ”存在的问题及解决方案。 7 阅读下列说明和图,回答以下问题,将解答填入答题纸的对应栏内。 【说明】 某城市的各国家公园周边建造了许多供游客租用的小木屋和营地,为此,该城市设置了一个中心售票处和若干个区域售票处。游客若想租用小木屋或营地,必须前往中心售票处进行预定并用现金 支付全额费用,所有的预定操作全部由售票处的工作人员手工完成。现欲开发一信息系

8、统,实现小木屋和营地的预定及管理功能,以取代手工操作。该系统的主要功能描述如下: 1管理预定申请。游客可以前往任何一个售票处提出预定申请,系统对来自各个售票处的预定申请进行统一管理。 2预定。预定操作包含登记游客预定信息、计算租赁费用、付费等步骤。 3支付管理。游客付费时可以选择现金和信用卡付款两种方式。使用信用卡支付可以享受 3的折扣,现金支付没有折扣。 4游客取消预定。预定成功之后,游客可以在任何时间取消预定,但需支付赔 偿金,剩余部分则退还给游客,赔偿金的计算规则是,在预定入住时间之前的 48小时内取消,支付租赁费用 10的赔偿金;在预定人住时间之后取消,则支付租赁费用 50的赔偿金。

9、5自动取消预定。如果遇到恶劣天气 (如暴雨、山洪等 ),系统会自动取消所有的预定,发布取消预定消息,全额退款。 6信息查询。售票处工作人员查询小木屋和营地的预定情况与使用情况,以判断是否能够批准游客的预定申请。 现采用面向对象方法开发上述系统,得到如表 31所示的用例列表和表 32所示的类列表,对应的用例图和类图分别如图 31和图 32所示。 8 根据说明中的描述与表 31,给出图 31中 UC1 UC6处所对应的用例名称。 9 根据说明中的描述与表 32,给出图 32中 C1 C7处所对应的类名。 10 对于某些需求量非常大的小木屋或营地,说明中功能 4的赔偿金计算规则,不足以弥补取消预定所

10、带来的损失,如果要根据预定的时段以及所预定场地的需求量,设计不同层次的赔偿金计算规则,需要对图 32进行怎样的修改 ?(请用文字说明 ) 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 10 阅读下列说明和 C代码,回答以下问题,将解答写在答题纸的对应栏内。 【说明】 设有 n个货物要装入若干个容重为 C的集装箱以便运输,这 n个货物的体积分别为 s1, s2, , sn),且有 siC(1in)。为节省运输成本,用尽可能少的集装箱来装运这 n个货物。 下面分别采用最先适宜策略和最优适宜策略来求解该问题

11、。 最先适宜策略 (firstfit)首先将所有的集装箱初始化为空,对于所有货物,按照所给的次序,每次将一个货物装入第一个能容纳它的集装箱中。 最优适宜策略 (bestfit)与最先适宜策略类似,不同的是,总是把货物装到能容纳它且目前剩余容重最小的集装箱,使得该箱子装人货物后闲置空间最小。 【 C代码】 下面是这两个算法的 C语言核心代码。 (1)变量说明 n:货物数 C:集装箱容量 S:数组,长度为 n,其中每个元素表示货物的体积,下标从 0开始 b:数组,长度为 n, bi表示第 n+i个集装箱当前已经装入货物的体积,下标从 0开始 i, j:循环变量 k:所需的集装箱数 min:当前所用

12、的各集装 箱装入了第 i个货物后的最小剩余容量 m:当前所需的集装箱数 temp:临时变量 (2)函数 firstfit int firstfit() int i, j; k=0: for(i=0; i n; i+) bi=0; for(i=0; i n; i+) (1) ; while(C-bj si) J+: (2) ; k=k (j+1)?k: (j+1); return k; (3)函数 bestfit int bestfit() int i, j, min, m, temp; k=0; for(i=0; i n; i+) bri=0; for(i=0; i n; i+) min=C;

13、 m=k+1: for(J=0; j k+1; J+) temp=C-bj-si; if(temp 0&temp min) (3) ; m=j; (4) ; k=k (j+1)?k: (j+1); return k; 11 根据说明和 C代码,填充 C代码中的 (1) (4)。 12 根据说明和 C代码,该问题在最先适宜和最优适宜策略下分别采用了 (5) 和 (6) 算法设计策略,时间复杂度分别为 (7) 和 (8) (用 O符号表示 )。 13 考虑实例 n=10, C=10,各个货物的体积为 4, 2, 7, 3, 5, 4, 2, 3, 6, 2)。该实例在最先适宜和最优适宜策略下所需的

14、集装箱分别为 (8) 和 (10) 。考虑一般的情况,这两种求解策略能否确保得到最优解 ? (11) 能或否 ) 14 阅读下列说明 和 C+代码,将应填入 (1) (6)处的字句写在答题纸的对应栏内。 【说明】 现欲开发一个软件系统,要求能够同时支持多种不同的数据库,为此采用抽象工厂模式设计该系统。以 SQL Server 和 Access两种数据库以及系统中的数据库表 Department为例,其类图如图 51所示。 【 C+代码】 #include iostream using namespace std; class Department *代码省略 * ;class IDepartm

15、entpublic: (1) =0; (2) =0; class SqlserVerDepartment: (3) public: void Insert(Department*department) cout “Insert a record into Department in SQL Server! n”; 其余代码省略 Department GetDepartment(int id) 代码省略 ; class AccessDepartment: (4) public: void Insert(Department*department) cout “Insert a record in

16、to Department in ACCESS! n”; 其余代码省略 Department GetDepartment(int id) *代码省略 * ; (5) public: (6) =0; class sqlserVerFactory: public IFactory public: IDepartment* CreateDepartment()return new SqlserverDepartment(); 其余代码省略 ; class AccessFactory: public IFactory public: IDepartment* CreateDepartment()ret

17、urn new AccessDepartment(); 其余代码省略 ; 15 阅读下列说明 Java代码,将应填入 (1) (6)处的字句写在答题纸的对应栏内。 【说明】 现欲开发一个软件系统,要求能够同时支持多种不同的数据库,为此采用抽象工厂模式设计该系统。以 SQIL Server 和 Access两种数据 库以及系统中的数据库表 Department为例,其类图如图 61所示。 Java代码】 import java util *: class Department *代码省略 * )interface IDepartment (1) ; (2) ; class SqlserverDe

18、partment: (3) public: voidInsert(Department department) System out println(“Insert a record into Department in SOL Server!n”); 其余代码省略 public Department GetDepartment(int id) 代码雀略 class AccessDepartment: (4) public voidInsert(Department department) System out println(“Insert a record into Department

19、in ACCESS! n”); 其余代码省略 public Department GetDepartment(int id) 代码省略 ; (5) (6) ; class sqlserverFactory implements IFactory public IDepartment CreateDepartment()( return new Sql serverDepartment(); 其余代码省略 ; class AccessFactory implements IFactory public IDepartment createDepartment() return new Acces

20、sDepartment(); 其余代码省略 ; 2012年下半年软件水平考试(中级)软件设计师下午(应用技术)真题试卷答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 【正确答案】 E1:商家 E2:支付系统 E3:物流系统 E4: Crystal Reports 【试题解析】 本问题考查顶层 DFD。顶层 DFD一般用来确定系统边界,将待开发系统看做一个加工,因此图中只有唯一的一个处理 (“购物车 ”)和一些外部实体,以及这两者之间 的输入输出数据流。外部实体可以是使用系统的用户,也可以是为系统提供输入或接收系统输出的外部系统。本问题要求根据描述确定图中的外部实体,应仔细分析题目

21、中的描述,并结合已经在顶层数据流图给出的数据流进行分析。 E1到购物车的数据流是和物流相关的信息,由此定位到 “物流跟踪 ”段,从此段的描述不难判断 E1是商家; E2到购物车的数据流是和转账相关的信息,由此定位到 “付款 ”段,从此段的关键字 “转账请求 ”和 “转账结果 ”不难判断 E1 是支付系统; E3到购物车的数据流的关键字为 “运单号 ”和 “物流信息 ”,定位到 “物流跟踪 ”段,从该段的最后不难判断 E3是物流系统; E4到购物车的数据流的关键字为 “报表 ”,由此定位到 “生成报表 ”段,不难判断 E4是 Crysta1 Reports。 2 【正确答案】 D1:订单表 D2

22、:商品表 D3:商品分类表 D4:购物车表 【试题解析】 本问题考查 DFD中数据存储的确定。本题中涉及的数据存储有 5个:商品表、购物车表、订单表、顾客表和商品分类表,接下来需要结合图 1一 2所示的 O层数据流图进行确定。 D1与 “提交订单 ”、 “改变价格 ”、 “物流跟踪 ”和“付款 ”等加工相关,而这些加 工都使用订单表,因此可以确定 D1是订单表;然后定位到图中名为 “维护信息 ”的加工,由 “管理员维护 (增、删、改、查 )顾客表、商品分类表和商品表中的信息 ”可知, D2和 D3为商品分类表或商品表, D4为购物车表。由 D2与 “加入购物车 ”加工的关系,可知 D2为商品表

23、, D3为商品分类表。 3 【正确答案】 图 12中缺少的数据流如下表所示: 【试题解析】 本问题考查补充分层 DFD中的数据流。在分层 DFD中,需要保持父图和子图的平衡,即父图中某加工的输入输出数据流必须与其子图的输入输出数据流在数量和名字上相同,或者父图的一个输入 (或输出 )数据流对应于子图中几个输入 (或输出 )数据流,而子图中组成这些数据流的数据项全体正好是父图中的一个数据流。 由 “付款 ”段中有关 “根据转账结果返回支付状态并更改购物车表中商品的状态 ”的描述,存在一个起点为 “付款 ”、终点为 “D4”或 “购物车表 ”的数据流;由 “提交订单 ”段中有关 “将购物车表中的商

24、品状态改为 待付款,显示订单详情 ”的描述,存在一个起点为 “D4”或 “购物车表 ”、终点为 “提交订单 ”的数据流;由 “付款 ”段中有关“顾客点击付款后,系统先根据顾客表中关联的支付账户,将转账请求 (验证码、价格等 )提交给支付系统 (如信用卡系统 )进行转账 ”的描述,存在一个起点为 “顾客表 ”、终点为 “付款 ”的数据流;由 “生成报表 ”段中有关 “从订单表、商品表以及商品分类表中读取数据,调用第三方服务 Crystal Reports生成相关报表 ”的描述,存在一个起点为 “D1”或 “订单表 ”、终点为 “生成报表 ”的数据流。 4 【正确答案】 转账请求 =验证码 +价格

25、 +账号信息 顾客订单物流查询请求 =顾客标识 +订单标识 商家订单物流查询请求 =商家标识 +订单标识 【试题解析】 数据流图描述了系统的分解,但没有对图中各成分进行说明。数据项是组成数据流和数据存储的最小元素。 “转账请求 ”数据流中包含验证码、价格、账号信息等数据项; “顾客订单物流查询请求 ”数据流中包含顾客标识和订单标识等数据项; “商家订单物流查询请求 ”数据流中包含商家标识和订单标识等数据项。 5 【正确答案】 【试题解析】 本题考查数据库的概念结构设 计。两个实体集之间的联系类型分为三类:一对一 (1: 1)联系、一对多 (1: n)联系和多对多 (m: n)联系。 根据题意,

26、每个部门有多名员工,每个员工只能在一个部门工作,因此部门和员工之间存在一个名为 “所属 ”的 1: n联系;每个部门只有一个主管,负责管理本部门的事务和人员,因此部门和主管之间存在一个名为 “管理 ”的 m: n 联系;一个策划任务可由多名策划员参与执行,而一名策划员可以参与多项策划任务,因此策划员和策划任务之间存在一个名为 “执行 ”的 m: n 联系;一个客户可以提交多个会议申请,一个会议申请对应唯一的客户, 因此客户和会议申请之间存在一个名为 “执行 ”的 1: n联系;一个业务员可以申请多个会议,一个会议对应一个业务员,因此业务员和会议申请之间存在一个名为 “受理 ”的 1: n联系。

27、 根据以上分析,完善图 2-1所示的实体联系图可参见参考答案。 6 【正确答案】 (a)部门号,职位 (b)申请号,客房类型,客户号,其中主键为 申请号 ,外键为客户号 #、员工号 # (c)申请号,员工号,其中主键和外键均为申请号和员工号 (d)申请号,员工号,其中主键为 申请号,员工号,实际完成时 间 ,外键为申请号 #,员工号 # 【试题解析】 本问题考查数据库的逻辑结构设计,题目要求补充完整各关系模式,并给出各关系模式的主键和外键。 根据实体联系图和需求描述,员工关系模式主要包含员工号、姓名、部门号、职位、联系方式和工资等信息,因此 (a)处应填入部门号,职位;会议申请主要包含申请号、

28、开会日期、会议地点、持续天数、会议人数、预算费用、会议类型、酒店要求、会议室要求、客房类型、客房数、联系人、联系方式、受理标志、员工号等信息,又由于客户和会议申请间存在一对多联系,应将一端的键并入多端, 因此 (b)处应填入申请号,客房类型,客户号,其中主键为申请号,外键为客户号和员工号;由图 21中策划任务与会议申请及主管之间的关系,应将另两个关系的键并人该关系,因此 (c)处应填入申请号,员工号,其主键和外键为申请号和员工号;由策划任务、策划员和执行策划三者间的关系可知, (d)处应填入申请号,员工号,其主键为申请号、员工号和实际完成时间;外键为申请号和员工号。 7 【正确答案】 “会议申

29、请 ”关系模式存在数据冗余及数据修改的不一致性问题,应将其分解为如下两个关系模式:会议申请 1(申请号,客户号,开会日期, 会议地点,持续天数,会议人数,预算费用,会议类型,酒店要求,会议室要求,联系人,联系方式,受理标志,员工号 )及会议申请 2(申请号,客房类型、客房数 )。 【试题解析】 会议申请关系中的每个属性都是不可分割的数据项,且申请号和客房类型决定类型, “客房类型、客房数 ”等信息在会议申请关系中重复存储,存在大量的数据冗余问题。此外,若一部分信息被修改,而另一部分没有修改,容易造成数据修改的不一致性问题。 8 【正确答案】 UC1: CheckAvailablity UC2:

30、 MakeReservation UC3: GetDiscount UC4: ManageCashPayment UC5: ManageCrCardPayment UC6: CalculateRefund 【试题解析】 本问题要求将图 31中的用例名称补充完整。用例图的构成要素有:参与者、用例以及用例之间的关系。首先找出本题的突破口,即图 31中,ManagePayment 与 UC4、 UC5间的泛化关系。由 “游客付费时可以选择现金或信用卡付款两种方式 ”,可知 UC4和 UC5 为 ManageCashPayment 及ManageCrCardPayment。 ManagePayment

31、 与 UC3之间为 include关系,又由 “信用卡支付可以享受折扣,现金支付没有折扣 ”,可知 UC3 为GetDiscount。由 CancelReservation 和 AutoCancelReservation 用例与 UC6之间的关系,取消预订后需要支付赔偿金,因此 UC6为 CalculateRefund。此外,ManageInquiries 是管理预订请求用例,在预订时包含登记游客信息、计算租赁费用等,因此 UCl 为 CheckAvailablity, UC2为 MakeReservation。 9 【正确答案】 C1: NationPark C2: Rate C3: Tic

32、keting officer C4: Payment C5: Discount C6: CashPayment C7: CreditCardPayment 【试题解析】 本问题考查的是类图建模,解题的重点在于根据类图中提供的类及类之间的关联关系,推断出剩余的类。从图 32可以看出,需要补充的类集中在三个结构:聚集结构 (C1和 C2)、泛化结构 (C4、 C6和 C7)、关联结构 (C3和C5)。泛化结构是比较容易辨识的类之间的关联关系,是一种特殊一般关系。由说明中 “游客付费时可以选择现金或信用卡付款两种方式 ”及 “信用卡支付可以享受折扣,现金支付没有折扣 ”的描述,可以确定 C4为 Pa

33、yment, C5为 DiseotJnt,C6为 CashPayment, C7为 CreditCardPayment, C6和 C7可以互换。由于ReservationItem与 C1、 C2间是聚集结构,其之间存在 “部分整体 ”关系,并由其之间的多重度可知, C1为 NationPark, C2 为 Rate。最后,结合表 32及Reservation 与 C3 问的关系,可判断 C3 为 Ticketing officer。 10 【正确答案】 修改方案 1:增加一个新类,该类与类 ReservationItam之间有关联关系。 修改方案 2:修改 Rate类,使其具有计算赔偿金的功能

34、。 【试题解析】 本问题较为新颖,在以往考试中出现较少。 题目要求根据预定的时段以及所预定场地的需求量,设计不同层次的赔偿金计算规则。在图 32中,和赔偿金相关的类是 ReservationItem和 Rate。因此可以通 过新增加一个类,使该类与类 ReservationItern 之间有关联关系,或直接修改Rate类,使其具有计算不同层次赔偿金的功能。 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 11 【正确答案】 (1)j=0 (2)bj=bj+si (3)rain=temp (4)bm=bm

35、+si 【试题解析】 本题描述的算法包括最先适宜算法和最优适宜算法。其中,最先适宜算法要求按顺 序给货物找到一个能容纳它的集装箱,找到即可装箱。这里的关键在于找到第一个能容纳它的集装箱,从头到尾遍历各集装箱即可。 firstfit函数用于实现最先适宜算法。定位到 (1)处,其上面的 for循环用于对所有 n 个货物进行遍历,分别找出满足条件 C-bj =si的集装箱。但条件 C-bj si中的变量 j在 (1)前并没有显式的赋值语句,且遍历各集装箱应从第一个开始,因此 (1)应填入j=0。 (2)处表示货物已放入集装箱的情况,应更新装入货物后的体积,因此 (2)应填入 bj=bj+si。 最

36、优适宜算法不仅要找到能容纳货物的集装箱,而且还要求该集装箱的剩余容量最小。 bestfit函数用于实现最优适宜算法。该函数的: for循环语句中的 temp表示剩余的最小容量,若其小于 min,则应更新其值。因此, (3)应填入min=tamp。和 firstfit函数中 (2)类似的思路, (4)应填入 bm=bm+si。 12 【正确答案】 (5)贪心 (6)贪心 (7)O(n2) (8)O(n2) 【试题解析】 贪心算法在解决最优化问题上是仅根据当前已有的信息作出选择,即不是从整体最优考虑,它所作出的选 择只是力求局部最优。最先适宜策略和最优适宜策略均采用了该算法设计策略。 对于时间复杂

37、度,应根据程序中循环的层数及每层循环的次数来进行计算。可以很容易的判断,这两种算法的时间复杂度均为 O(N2)。 13 【正确答案】 (9)5 (10)4 (11)否 【试题解析】 本问题考查对程序的具体理解和应用。 对 firstfit 函数进行遍历的结果如下: 因此,该实例在最先适宜策略下所需的集装箱数为 5。同理可对 bestfit 函数进行遍历,可得到该实例在最优适宜策略下所需的集装箱数为 4,遍历过程可由考生 自己进行,以增强对整个算法的理解。 由于贪心算法在解决最优化问题上是仅根据当前已有的信息作出选择,即不是从整体最优考虑,它所作出的选择只是力求局部最优,因此这两种求解策略不能确

38、保得到最优解。 14 【正确答案】 (1)virtual void Insert(Department*department) (2)virtual Department GetDepartment(int id) (3)public IDepartment (4)public IDepartment (5)class Ifactory (6)virtual IDepartment*CreateDepartment() 【试题解析】 本题考查抽象工厂设计模式的概念及其应用。 抽象工厂设计模式的意图是:提供一个创建一系列相关或相互依赖的对象,而无须指出它们具体的类。在如下情况下应当考虑使用抽象工

39、厂模式: 当一个系统要独立于它的产品的创建、组合和表示时; 当一个系统要由多个产品系列中的一个来配置时; 当需强调一系列相关的产品对象的设计以便进行联合使用时; 想提供一组对象而不显示它们的实现 过程,只显示它们的接口时。 抽象工厂设计模式的类图如图 52所示,其中: AbstractFactory 为抽象工厂,声明抽象产品的方法。 ConcreteFactory 为具体工厂,执行生成抽象产品的方法,生成一个具体的产品。 AbstractProduct 为抽象产品,为一种产品声明接口。 Product为具体产品,定义具体工厂生成的具体产品的对象,实现产品接口。 图 5-1中的 Ifactory

40、对应类图中的AbstractFactory、 Sqlserverfactory 和 Accessfactory 对应 类图中的 Concrete-Factory、 SqlserverDepartment 和 AccessDepartment 对应类图中的 Product,而IDepartment对应类图中的 Abstract-Product。 由于类 IDepartment的作用是为其子类提供接口,所以将其定义为抽象类。在 C+中,抽象类中至少包含一个纯虚函数的类,而纯虚函数是没有函数体的函数,其作用是为其子类提供统一的接口。若要使用纯虚函数,必须在子类中进行重置。 (1)和 (2)考查的是如

41、何定义抽象类 IDep-artment。从 IDepartment的子类的方法中可以确定 (1)处应填入 virtual void Insert(Department*department), (2)处应填入 virtualDepartment GetDepartment(int id)。 (3)和 (4)考查继承的概念和语法。由于SqlserverDepartment 和 AccessDepartment 均继承 IDepartment,因此, (3)和 (4)都应填入 public IDepartment。 由于所给程序中缺少有关抽象类 Ifactory的定义,因此 (5)处应为定义 类

42、Ifactory,应填入 class Ifactory。抽象类 Ifactory中至少需包含一个纯虚函数的类,由其子类 Sqlserverfactory 和 Aecessfactory 中方法的定义可知, (6)处应填入 virtual IDepartment*CreateDepartment()。 15 【正确答案】 (1)void Insert(Department department) (2)Department GetDepartment(int id) (3)implements IDepartment (4)implements IDepartment (5)interface

43、Ifactory (6)IDepartment CreateDepartment() 【试题解析】 本题考查抽象工厂设计模式的概念及其应用。 抽象工厂设计模式的意图是:提供一个创建一系列相关或相互依赖的对象,而无须指出它们具体的类。在如下情况下应当考虑使用抽象工厂模式: 当一个系统要独立于它的产品的创建、组合和表示时; 当一个系统要由多个产品系列中的一个来配置时; 当需强调一系列相关 的产品对象的设计以便进行联合使用时; 想提供一组对象而不显示它们的实现过程,只显示它们的接口时。抽象工厂设计模式的类图如图 62所示,其中: AbstractFactory 为抽象工厂,声明抽象产晶的方法。 Co

44、ncreteFactory 为具体工厂,执行生成抽象产品的方法,生成一个具体的产品。 AbstractProduct 为抽象产品,为一种产品声明接口。 Product为具体产品,定义具体工厂生成的具体产品的对象,实现产品接口。 图 6-1中的 Ifactory 对应类图中的 AbstractFactory、 Sqlserverfactory 和Accessfactory对应类图中的 ConcreteFactory、 SqlserverDepartment 和AccessDepartment 对应类图中的 Prod-uct,而 IDepartment对应类图中的AbstractProduct。

45、(1)和 (2)考查接口 IDepartment中方法的定义。由其子类SqlserverDepartment 和 AccessDepartment 中方法的定义,可知 (1)处应填入 void Insert(Department department), (2)处应填入 Department GetDepartment(int id)。 (3)和 (4)考查接口 IDepartment的实现。接口的实现是在一个类的声明中使用关键字 “implements”来表示该类使用某个已经定义的接口,然后即可在该类体中使用接口中定义的常量,而且必须实现接口中定义的所有方法。因此, (3)和 (4)都应填入 implements IDepartment。 由于所给程序中缺少接口 Ifactory 的定义,因此 (5)处应为定义接口 Ifactory,应填入 interface Ifactory。由于类Sqlserverfactory 和 Aceessfaetory 中必须实现接口 Ifaetory中定义的所有方法,观察这两个类中的方法可知, (6)处应填入 IDepartment CreateDepartment()。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1