好文档 - 专业文书写作范文服务资料分享网站

2015上半年软件设计师考试真题及答案-下午卷

天下 分享 时间: 加入收藏 我要投稿 点赞

问题:3.1 (7分)

根据说明中的描述,给出图3-1中(1)~(7)所对应的类名(类名使用表3-1中给出的序号)。

问题:3.2 (5分)

根据说明中的描述,确定表3-2中的属性/方法分别属于哪个类(类名、方法/属性名使用表3-1、3-2中给出的序号)。

问题:3.3 (3分)

在图3-1采用了何种设计模式?以100字以内文字说明采用这种设计模式的原因。

答案3.1:

解析:本题属于经典的考题,主要考查面向对象分析方法与设计的基本概念。在建模方面,

11

本题中只涉及到了UML类图。类图上的考点也是比较常规的对类的识别以及类中属性及方法的确定,题目难度不大。

图3-1共需要确定7个类,可以先从图中几个特殊关系处入手,即(1)?(3)和(4)?(6)。 先来分析(1)?(3),这是一个继承+聚集的结构,而且联系的名称“participants” 是一个比较明显的提示,说明这个层次结构是与【说明】中的功能描述(1)相对应的。 参考表3-1,与之相关的类是C5 (AuctionParticipant)、C7 (OneParticipant)和C9 (CompositeParticipant)。C7、C9是特殊的参与者,所以(1)处应该为C5; (2)处应该 为C9,这个聚集关系针对着【说明】中的“不同的团体也可以组成新的团体参与拍卖活动”需求;(3)处为C7。

结合【说明】和表3-1,另外一组具有“一般-特殊”关系的类只有C6 (Interchange), C8 (OfflinePay)和C10 (OnlinePay)。显而易见,C8和C10是C6的两种具体方式, 所以(4)处应该为C6, (5)、(6)处分别为C8和C10。

这样(7)处对应的类只能是Item了。结合【说明】和表3-1可知,(7)处对应的类表达的应该是拍卖中的拍卖品,所以(7)处应该是C2。

答案3.2解析:

答案3.3解析:

在图3-1中使用了Composite模式。

以树形结构表示个人参与者和团体参与者之间的“部分-整体”关系,使得对单个对象和组合对象的使用具有一致性。

12

解析:在【说明】部分有一个很明显的提示:“拍卖参与者分为个人参与者和团体参与者两种。不同的团体也可以组成新的团体参与拍卖活动”。这里很清晰地表达了一种“部分 -整体”的层次关系,这种关系非常适合于采用Composite (组合)设计模式来表达。 Composite设计模式将对象组合成树形结构以表示“部分-整体”的层次结构。 Composite使得用户对单个对象和组合对象的使用具有一致性。

第4题阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。 【说明】

n-皇后问题是在n行n列的棋盘上放置n个皇后,使得皇后彼此之间不受攻击,其规则是任意两个皇后不在同一行、同一列和相同的对角线上。

拟采用以下思路解决n-皇后问题:第i个皇后放在第i行。从第一个皇后开始,对每个皇后,从其对应行(第i个皇后对应第i行)的第一列开始尝试放置,若可以放置,确定该位置,考虑下一个皇后;若与之前的皇后冲突,则考虑下一列;若超出最后一列,则重新确定上一个皇后的位置。重复该过程,直到找到所有的放置方案。 【C代码】

下面是算法的C语言实现。 (1)常量和变量说明

pos:一维数组,pos[i]表示第i个皇后放置在第i行的具体位置 count:统计放置方案数 i,j,k:变量 N:皇后数 (2)C程序

#include #include #define N4

/*判断第k个皇后目前放置位置是否与前面的皇后冲突*/ in isplace(int pos[], int k) { int i;

13

for(i=1; i

if( (1) || fabs(i-k) ══ fabs(pos[i] - pos[k])) { return(); } } return 1; }

int main() { int i,j,count=1; int pos[N+1]; //初始化位置

for(i=1; i<=N; i++) { pos[i]=0; } (2) ; while(j>=1) { pos[j]= pos[j]+1; /*尝试摆放第i个皇后*/ while(pos[j]<=N&& (3)_) { pos[j]= pos[j]+1; }

/*得到一个摆放方案*/ if(pos[j]<=N&&j══ N) { printf(\方案%d: \for(i=1; i<=N; i++){ printf(\}

printf(\}

14

/*考虑下一个皇后*/ if(pos[j]<=N&& (4) ) { j=j+1;

} else{ //返回考虑上一个皇后 pos[j]=0; (5) ; } } return 1; }

问题:4.1 (10分)

根据以上说明和C代码,填充C代码中的空(1)~(5)。

问题:4.2 (2分)

根据以上说明和C代码,算法采用了 (6) 设计策略。

问题:4.3 (3分) 上述C代码的输出为:(7) 。

答案4.1解析:

(1)pos[i]==pos[k] 或其等价形式 (2)j=1

(3)!isplace(pos,j) 或其等价形式 (4)j

解析:本题考查算法设计和C程序设计语言的相关知识。

此类题目要求考生认真阅读题目,理解算法思想,并思考将算法思想转化为具体的程序设计

15

2015上半年软件设计师考试真题及答案-下午卷

问题:3.1(7分)根据说明中的描述,给出图3-1中(1)~(7)所对应的类名(类名使用表3-1中给出的序号)。问题:3.2(5分)根据说明中的描述,确定表3-2中的属性/方法分别属于哪个类(类名、方法/属性名使用表3-1、3-2中给出的序号)。问题:3.3(3分)在图3
推荐度:
点击下载文档文档为doc格式
4qfgl9vhx50weks4q8jb3z01x0bw3600n6o
领取福利

微信扫码领取福利

微信扫码分享