上半年软件设计师下午卷试题及答案解析 下载本文

员工

运送 * * 顾客

*

* 托运公司

联系 代购员 配送员

顾客地址

新增一个弱实体顾客地址,新增一个联系 客户收货地址,,联连接顾客实体和顾客地址类

型为 1:*;弱实体用双矩型 运送关系模式增加该订单收货地址

试题三、

问题 1:

A1:Central system 或中心系统 A2:Driver 或驾驶员

A3:Regional center 或区域系统 A4:Traffic advice center 或交通广播电台

其中 A3、A4 可以互换 问题 2:

U1:Underpaid transaction U2:Record Illegal use U3:Create transaction U4:Record traffic event U5:Charge card

其中 U1、U2 可以互换,用例名称必须为英文,因为表中的汉字是对用例的说明。问题 3:

C1:Center system C2:Traffic events C3:Toll gantry C4:Radar sensor C5:Radio transceiver C6:Digital Camera

其中 C4、C5、C6 可以互换 【解析】

问题 1:首先要识别出参与者,是人或组织。题干中表示参与者的有:驾驶员、区域系统、中心系统、交通广播电台。由问题 2 得出 A1 为中心系统。

问题 2:填写用例,要先找到突破口,本题有两个突破口,一个是 U1、U2 是 U3 的扩展, 而所给定的用例名称中,只有记录透支帐户交易信息和记录失败交易信息,是记录收费交易的扩展。二个是有一个孤立的用例,从题干中可知为记录交通事件,再加上问题 1 中的参与者,可以推出完整的用例图。

问题 3:先从 C4、C5、C6 与 C3 的一个多组合关系。题干中只有龙门架由三个部分组成。 C1 与 Regional Center 对应关系是 1 个对象对应多个对象,C1 只可能为中心系统。然后题干(5)中获取龙门架的所有记录叫交通事件。且一个 Regional Center 有多个 C2 对象与之对应。

试题四、

问题 1: (1):i<=n (2):i<=j

(3):temp = (temp>=r[i]+r[j-i])temp:(r[i] + r[j - i]) (4):r[j] = (temp>p[j])temp:p[j]; 问题 2: (5) 动态规划法 (6) O(2n) (7) O(n2) 【解析】问题 2:

题干中提到说考虑所有可能的 i,得到最大收益的方式,而自底向上算法实现时,使用到数组把其中最优的解记录。是动态规划法。

试题五、

(1) virtual void buildPartA() = 0 (2) virtual Product * getResult() = 0 (3) product->setPartA (4) product->setPartB (5) builder->buildPartA();

builder->buildPartB();

Product* p = builder->getResult();

【解析】第 5 空,由于后面的代码省略,所以以上三个都可。

试题六、

(1) virtual void buildPartA() (2) virtual Product getResult() (3) product.setPartA (4) product.setPartB (5) builder.buildPartA();

builder.buildPartB();

Product p = builder.getResult();

【解析】第 5 空,由于后面的代码省略,所以以上三个都可。