软考考试汇总.docx_第1页
软考考试汇总.docx_第2页
软考考试汇总.docx_第3页
软考考试汇总.docx_第4页
软考考试汇总.docx_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软考考试汇总本文对2006年5月至2013年5月【8年,15次】的软件设计师级别下午试题进行一个简单的汇总统计,希望对准备参加软考的朋友能有所帮助。 从2006年5月开始(尤其是从2010年5月开始),软件设计师级别的试题题型基本固定: (1)第一题为结构化分析与设计,主要考查数据流图DFD的绘制,考查形式为顶层数据流图和0层数据流图填空(外部实体/数据源、数据存储/文件、加工处理/数据变换填空)、找出遗漏的数据流或者错误的数据流,偶尔考查数据流图的一些绘制要点,如分层数据流绘制需要注意的问题等;【该题整体难度不大,需认真完成4-6道往年真题】 (2)第二题为数据库分析与设计,主要考查ER图的绘制以及ER图与关系模式的映射,考查形式为补充完成ER图(增加实体、联系、属性以及联系类型)、将关系模式补充完整(属性/字段填空)、找出关系模式的主外键,偶尔考查关系模式的规范化,如将某个关系模式转换为第三范式等;【该题整体难度不大,需认真完成4-6道往年真题,但偶尔有个别小问题需要仔细分析才能回答准确】 (3)第三题为面向对象分析与设计,主要考查对常用UML图形的掌握情况,比较常见的图形包括用例图、类图、顺序图、活动图和状态图,考查形式为图形填空,附带考查UML的一些基础知识,例如类图中的几种关系及其区别、用例图中用例之间关系的内涵等;【需要熟练掌握常用的UML图形,尤其是用例图和类图,偶尔还包含一道与设计模式有关的小问题】 (4)第四题为数据结构与算法,主要考查对常用数据结构和算法的掌握情况,通常考查一些中等难度的算法,例如最短装配时间算法、B树、贪心算法、动态规划、回溯法、背包问题、最短路径、拓扑排序、堆排序等,考查形式为C语言代码填空、复杂度分析(时空复杂度)、算法稳定性分析等;【该题为下午试题中难度较大的一题,需要熟悉一些常用的算法和C语言的语法】 (5)第五、六题为C+和Java(设计模式题,二选一),从2006年开始该题主要考查对常见设计模式的掌握情况,该试题通常会结合一个设计模式实例,给出实例描述和类图,然后进行程序代码填空,有C+和Java两个语言版本,二选一,只要有相关的设计模式基础,解答该题难度不大,没有设计模式基础也不用担心,只要认真理解其设计和实现意图,还是可以正确解答本题;【该题难度不大,有一定的设计模式基础将有助于理解和解答本题】 (6)从2010年开始,软件设计师考试中取消了单独的C语言试题(融合在数据结构与算法题中)。具体统计情况如下表所示【因篇幅限制,原题并未一一列出】:试题统计第一题第二题第三题第四题第五题第六题第七题2006年上数据流图/网上作业提交与管理系统UML /客户信息管理系统/类图ER图与关系模式/图书管理系统Web Service数据结构与算法/C语言/B树/多叉平衡查找树C+/订单管理系统/涉及到迭代器模式Java/订单管理系统/涉及到迭代器模式2006年下数据流图/建账软件ER图与关系模式/住房管理系统UML/电子商务网站/类图、序列图(顺序图)数据结构与算法/最短装配时间算法/程序流程图填空数据结构与算法/C语言/二叉链表C+/传输门/状态模式Java/传输门/状态模式2007年上数据流图/房屋租赁服务系统ER图与关系模式/医院门诊管理系统UML /图书管理系统/类图数据结构与算法/贪心算法/程序流程图填空数据结构与算法/C语言/树型分布网络C+/鸭子模拟游戏/策略模式Java/鸭子模拟游戏/策略模式2007年下数据流图/成绩管理系统ER图与关系模式/小型汽车维修管理系统UML /唱片播放器/类图、状态图数据结构与算法/贪心算法/程序流程图填空等C语言/简化绘图程序/基于结构体的面向对象编程C+/采购审批/职责链模式Java/采购审批/职责链模式2008年上数据流图/音像管理信息系统ER图与关系模式/篮球比赛信息管理系统UML /汽车停车场信息系统/用例图、类图、状态图数据结构与算法/快速排序/伪代码填空、时间复杂度分析等数据结构与算法/C语言/栈C+/家用电器遥控系统/命令模式Java/家用电器遥控系统/命令模式2008年下数据流图/销售管理系统ER图与关系模式/宾馆客房预订子系统UML /在线会议审稿系统/用例图、活动图数据结构与算法/动态规划算法/伪代码填空、时间复杂度分析等数据结构与算法/C语言/单链表C+/文档操作类库/模板方法模式Java/文档操作类库/模板方法模式2009年上数据流图/商品配送中心信息管理系统ER图与关系模式/大型连锁商场数据库系统UML/自动存提款机模拟系统(ATM)/用例图、序列图(顺序图)数据结构与算法/最短路径Floyd-Warshall算法/伪代码填空、时间复杂度分析等数据结构与算法/C语言/二叉树遍历C+/图像浏览系统/桥接模式Java/图像浏览系统/桥接模式2009年下数据流图/信用卡管理系统ER图与关系模式/多用户电子邮件客户端系统UML/订餐系统/用例图、活动图数据结构与算法/回溯法求解0-1背包问题/伪代码填空、穷举法等C+/文件目录树/组合模式Java/文件目录树/组合模式数据结构与算法/C语言/栈2010年上数据流图/数据管理中间件ER图与关系模式/实验管理系统UML/售票机/用例图、类图、中介者模式数据结构与算法/C语言/有向图拓扑排序/代码填空、拓扑序列求解、时间复杂度分析等C+/飞机飞行模拟系统/策略模式Java/飞机飞行模拟系统/策略模式2010年下数据流图/订单处理系统ER图与关系模式/小区物业收费管理系统UML/网上药店/类图、状态图、组合关系和聚合关系数据结构与算法/C语言/堆排序/代码填空、时间复杂度分析等C+/公司组织结构/组合模式Java/公司组织结构/组合模式2011年上数据流图/病人监控系统ER图与关系模式/服装采购管理系统UML/图形编辑器/用例图、类图、桥接模式数据结构与算法/C语言/排序算法/代码填空、时空复杂度分析等C+/饭店菜单/组合模式Java/饭店菜单/组合模式2011年下数据流图/招聘系统ER图与关系模式/物流公司信息系统UML/Pay & Drive系统(开多少付多少)/用例图、类图数据结构与算法/C语言/回溯法(类似背包问题)/代码填空C+/纸巾售卖机/状态模式Java/纸巾售卖机/状态模式2012年上数据流图/图书管理系统ER图与关系模式/住院病人信息管理系统UML/网上购物平台/用例图、类图数据结构与算法/C语言/作业最优调度算法/代码填空等C+/咖啡店计算费用/状态模式Java/咖啡店计算费用/状态模式2012年下数据流图/电子商务系统之购物车ER图与关系模式/会议预定系统UML/小木屋和营地的预定及管理系统/用例图、类图数据结构与算法/C语言/装箱问题(一维装箱问题)/代码填空等C+/多数据库支持/抽象工厂模式Java/多数据库支持/抽象工厂模式2013年上数据流图/募捐系统ER图与关系模式/电视台信息管理系统UML/基于Web的城市黄页/用例图、类图数据结构与算法/C语言/任务调度问题/代码填空,时间复杂度分析等C+/自动生成求职简历/原型模式Java/自动生成求职简历/原型模式设计模式试题单独统计2006年上半年迭代器模式2006年下半年状态模式2007年上半年策略模式2007年下半年职责链模式2008年上半年命令模式2008年下半年模板方法模式2009年上半年桥接模式2009年下半年组合模式2010年上半年策略模式2010年下半年组合模式2011年上半年组合模式2011年下半年状态模式2012年上半年装饰模式2012年下半年抽象工厂模式2013年上半年原型模式12年上半年软件设计师之设计模式相关试题及解答 设计模式已成为软件设计师考试试题的一个重要组成部分,每次考试中都会有将近20分左右的设计模式试题,下面我分析一下最近一次软考(2012年5月)的设计模式试题,希望能够给备考软件设计师的童鞋们提供一点帮助,。 以下试题都来源于2012年5月软件设计师考试真题。上午试题: 面向对象分析与设计中的(37)是指一个模块在扩展性方面应该是开放的,而在更改性方面应该是封闭的;而(38)是指子类应当可以替换父类并出现在父类能够出现的任何地方。 (37) A.开闭原则 B.替换原则 C.依赖原则 D.单一职责原则 (38) A.开闭原则 B.替换原则 C.依赖原则 D.单一职责原则 (40)限制了创建类的实例数量,而(41)将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 (40) A.命令模式(Command) B.适配器模式(Adapter) C.策略模式(Strategy) D.单例模式(Singleton) (41) A.命令模式(Command) B.适配器模式(Adapter) C.策略模式(Strategy) D.单例模式(Singleton) (43)设计模式允许一个对象在其内部状态改变时改变它的行为。下图为这种设计模式的类图,已知类 State 为抽象类,则类(44)的实例代表了Context 对象的状态。 (43) A.单件(Singleton) B.桥接(Bridge) C.组合(Composite) D.状态(State) (44) A. Context B. ConcreteStateA C. Handle D. State 试题分析与解答:总的来说,这几道题都非常简单,(37)、(38)考查面向对象设计原则,(40)、(41)、(43)、(44)考查设计模式,答案如下:(37) A,这是开闭原则的定义。 (38) B,这是里氏代换原则(替换原则)的定义。 (40) D,单例模式用于限制类的实例数量。(41) B,适配器模式用于将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 (43) D,状态模式允许一个对象在其内部状态改变时改变它的行为。 (44) B,具体状态类(例如ConcreteStateA)的实例代表了环境类(Context )对象的状态。以上几道题在设计模式实训教程(刘伟,清华大学出版社,2012年1月)一书中都有原题,第(37)和(38)题参见“第2章 面向对象设计原则实训”选择题第(6)题(第31页),第(40)题参见“第3章 创建型模式实训”选择题第(26)题(第68页),第(41)题参见“第4章 结构型模式实训”选择题第(6)题(第112页),第(43)题和第(44)题参见“第5章 行为型模式实训”选择题第(18)题(第190页)。 下午试题: 近年来,下午试题的最后一题通常会考查设计模式,由于C+与Java题基本相同,下面以Java版试题为例:试题六(共15分) 阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如下表所示:咖啡价格/杯(¥)配料价格/份(¥)蒸馏咖啡(Espresso)25摩卡(Mocha)10深度烘焙咖啡(DarkRoast)20奶泡(Whip)8 现采用装饰器(Decorator)模式来实现计算费用的功能,得到如下图所示的类图。【Java代码】import java.util.*;(1) class Beverage /饮料 String description = Unknown Beverage; public (2) () return description; public (3) ;abstract class CondimentDecorator extends Beverage /配料 (4) ;class Espresso extends Beverage /蒸馏咖啡private final int ESPRESSO_PRICE = 25; public Espresso() description=Espresso; public int cost() return ESPRESSO_PRICE; class DarkRoast extends Beverage /深度烘焙咖啡 private final int DARKROAST_PRICE = 20; public DarkRoast() description = DarkRoast; public int cost() return DARKROAST PRICE; class Mocha extends CondimentDecorator /摩卡 private final int MOCHA_PRICE = 10; public Mocha(Beverage beverage) this.beverage = beverage; public String getDescription() return beverage.getDescription() + , Mocha; public int cost() return MOCHA_PRICE + beverage.cost(); class Whip extends CondimentDecorator /奶泡 private final int WHIP_PRICE = 8; public Whip(Beverage beverage) this.beverage = beverage; public String getDescription() return beverage.getDescription() +, Whip; public int cost() return WHIP_PRICE + beverage.cost(); public class Coffee public static void main(String args) Beverage beverage = new DarkRoast(); beverage=new Mocha( 5 ); beverage=new Whip ( 6 ); System.out.println(beverage.getDescription() +¥ +beverage.cost(); 编译运行上述程序,其输出结果为:DarkRoast, Mocha, Whip ¥38 本题答案如下: (1) abstract (2) String getDescription (3) abstract int cost() (4) Beverage beverage或protected Beverage beverage (5) beverage (6) beverage 本题在设计模式实训教程(刘伟,清华大学出版社,2012年1月)一书中对应题(参见“第6章 模式联用与综合实例实训”之实训练习第15题)如下:15. There is a coffee shop to server HouseBlend and Espresso coffee. Each coffee can be served with the following condiments: Milk, Mocha. Using Decorator pattern to construct the coffee shop program to compute every beverages cost with its description.abstract class Beverage public abstract String getDescription(); public abstract double getCost(); Draw the pattern class diagram, and full code (class CondimentDecorator, HouseBlend, Espresso,Milk, Mocha, StarBuzzCoffee and other classes required) to construct the program including a test drive (StarBuzzCoffee class).【译:有一家咖啡店提供HouseBlend咖啡和Espresso咖啡。每一种咖啡需要用到如下配料:牛奶,摩卡。使用装饰模式构建咖啡店程序,输出其描述并计算每种饮料的花费。abstract class Beverage public abstract String getDescription(); public abstract double getCost(); 画出模式类图,实现完整的代码(包括类CondimentDecorator,HouseBlend, Espresso, Milk, Mocha, StarBuzzCoffee以及其他所需的类)构建程序,包括一个测试驱动类(StarBuzzCoffee类)。】 试题分析及解答如下:本题使用装饰模式设计的类图如下所在该类图中,Beverage充当抽象组件,HouseBlend和Espresso充当具体组件,CondimentDecorator充当抽象装饰器,Milk和Mocha充当具体装饰器,StarBuzzCoffee充当客户端。本题完整代码示例如下所示:java view plaincopyprint?1. abstractclassBeverage/抽象组件 2. 3. publicabstractStringgetDescription();4. publicabstractdoublegetCost();5. 6. 7. classHouseBlendextendsBeverage/具体组件 8. 9. publicStringgetDescription()10. 11. returnHouseBlend咖啡;12. 13. publicdoublegetCost()14. 15. return10.00;16. 17. 18. 19. classEspressoextendsBeverage/具体组件 20. 21. publicStringgetDescription()22. 23. returnEspresso咖啡;24. 25. publicdoublegetCost()26. 27. return20.00;28. 29. 30. 31. classCondimentDecoratorextendsBeverage/抽象装饰器 32. 33. privateBeveragebeverage;34. publicCondimentDecorator(Beveragebeverage)35. 36. this.beverage=beverage;37. 38. publicStringgetDescription()39. 40. returnbeverage.getDescription();41. 42. publicdoublegetCost()43. 44. returnbeverage.getCost();45. 46. 47. 48. classMilkextendsCondimentDecorator/具体装饰器 49. 50. publicMilk(Beveragebeverage)51. 52. super(beverage);53. 54. publicStringgetDescription()55. 56. Stringdecription=super.getDescription();57. returndecription+加牛奶;58. 59. publicdoublegetCost()60. 61. doublecost=super.getCost();62. returncost+2.0;63. 64. 65. 66. classMochaextendsCondimentDecorator/具体装饰器 67. 68. publicMocha(Beveragebeverage)69. 70. super(beverage);71. 72. publicStringgetDescription()73. 74. Stringdecription=super.getDescription();75. returndecription+加摩卡;76. 77. publicdoublegetCost()78. 79. doublecost=super.getCost();80. returncost+3.0;81. 82. 83. 84. classStarBuzzCoffee/客户端测试类 85. 86. publicstaticvoidmain(Stringargs)87. 88. Stringdecription;89. doublecost;90. Beveragebeverage_e;91. 92. beverage_e=newEspresso();93. decription=beverage_e.getDescription();94. cost=beverage_e.getCost();95. System.out.println(饮料:+decription);96. System.out.println(价格:+cost);97. System.out.println(-);98. 99. Beveragebeverage_mi;100. beverage_mi=newMilk(beverage_e);101. decription=beverage_mi.getDescription();102. cost=beverage_mi.getCost();103. System.out.println(饮料:+decription);104. System.out.println(价格:+cost);105. System.out.println(-);106. 107. Beveragebeverage_mo;108. beverage_mo=newMocha(beverage_mi);109. decription=beverage_mo.getDescription();110. cost=beverage_mo.getCost();111. System.out.println(饮料:+decription);112. System.out.println(价格:+cost);113. System.out.println(-);114. 115. 116. /输出结果如下: 117. /饮料:Espresso咖啡 118. /价格:20.0 119. /- 120. /饮料:Espresso咖啡加牛奶 121. /价格:22.0 122. /- 123. /饮料:Espresso咖啡加牛奶加摩卡 124. /价格:25.0125. 设计模式与软考试题之状态模式(一) 126. 从2006年-2012年,在全国计算机技术与软件专业技术资格(水平)考试软件设计师级别考试中,状态模式已两次作为下午试题的最后一题出现(参考:历年软件设计师下午考试试题汇总统计),分别是2006年下半年和2011年下半年的两次考试。127. 128. 【全国计算机技术与软件专业技术资格(水平)考试 2006 年下半年软件设计师下午试卷】129. 130. 注:当年试题六和试题七二选一,试题六为C+版,试题七为Java版。131. 132. 试题六133. 阅读以下说明和 C+代码,将应填入 (n) 处的字句写在答题纸的对应栏内。134. 【说明】135. 传输门是传输系统中的重要装置。传输门具有 Open(打开)、Closed(关闭)、Opening(正在打开)、StayOpen(保持打开)、Closing(正在关闭)五种状态。触发传输门状态转 换的事件有 click、complete 和 timeout 三种。事件与其相应的状态转换如图6-1 所示。136.137. 图6-1 传输门响应事件与其状态转换图138. 下面的【C+代码 1】与【C+代码 2】分别用两种不同的设计思路对传输门进行状态模拟,请填补代码中的空缺。139. 140. 【C+代码 1】141. const int CLOSED = 1; const int OPENING = 2;142. const int OPEN = 3; const int CLOSING = 4;143. const int STAYOPEN = 5; /定义状态变量,用不同整数表示不同状态144. 145. class Door 146. private:147. int state; /传输门当前状态148. void setState(int state) this-state = state; /设置当前状态149. public: Door():state(CLOSED);150. void getState() /根据当前状态输出相应的字符串151. switch(state) 152. case OPENING: cout OPENING endl; break; 153. case CLOSED: cout CLOSED endl; break; 154. case OPEN: cout OPEN endl; break; 155. case CLOSING: cout CLOSING endl; break;156. case STAYOPEN: cout STAYOPEN state = state; 197. void getState()198. / 此处代码省略,本方法输出状态字符串,199. / 例如,当前状态为CLOSED时,输出字符串为“CLOSED”200. 201. void click(); 202. void timeout(); 203. void complete();204. ;205. 206. Door:Door() 207. CLOSED = new DoorClosed(this);208. OPENING = new DoorOpening(this); 209. OPEN = new DoorOpen(this);210. CLOSING = new DoorClosing(this); 211. STAYOPEN = new DoorStayOpen(this); 212. state = CLOSED;213. 214. void Door:click() (4) ;215. void Door:timeout() (5) ; 216. void Door:complete() (6) ; 217. 218. class DoorState /定义一个抽象的状态,它是所有状态类的基类219. protected: Door *door;220. public:221. DoorState(Door *door) this-door = door; 222. virtual DoorState(void);223. virtual void click() 224. virtual void complete() 225. virtual void timeout() 226. ;227. 228. class DoorClosed :public DoorState /定义一个基本的 Closed 状态229. public:230. DoorClosed(Door *door):DoorState(door) 231. virtual DoorClosed ()232. void click();233. ;234. 235. void DoorClosed:click() (7) ; 236. / 其它状态类的定义与实现代码省略237. 238. int main() 239. Door aDoor;240. aDoor.getState(); aDoor.click(); aDoor.getState(); aDplete();241. aDoor.getState(); aDoor.timeout(); aDoor.getState(); return 0;242. 243. 244. 试题七245. 阅读以下说明以及Java程序,将应填入 (n) 处的字句写在答题纸的对应栏内。246. 【说明】247. 传输门是传输系统中的重要装置。传输门具有 Open(打开)、Closed(关闭)、Opening(正在打开)、StayOpen(保持打开)、Closing(正在关闭)五种状态。触发状态的转换事件有 click、complete 和 timeout 三种。事件与其相应的状态转换如图7-1所示。248. 249. 图7-1 传输门响应事件与其状态转换图250. 下面的【Java 代码 1】与【Java 代码 2】分别用两种不同的设计思路对传输门进行状态模拟,请填补代码中的空缺。251. 【Java代码 1】252. public class Door 253. /定义状态变量,用不同的整数表示不同状态254. public static final int CLOSED = 1; 255. public static final int OPENING = 2;256. public static final int OPEN = 3; 257. public static final int CLOSING = 4;258. public static final int STAYOPEN = 5; 259. private int state = CLOSED;260. 261. private void setState(int state)this.state = state; /设置传输门当前状态262. public void getState() 263. / 此处代码省略,本方法输出状态字符串,264. / 例如,当前状态为 CLOSED 时,输出字符串为”CLOSED”265. 266. public void click() /发生 click 事件时进行状态转换267. if ((1) ) setState(OPENING);268. else if ( (2) ) setState(CLOSING);269. else if ((3) ) setState(STAYOPEN);270. 271. 272. /发生 timeout 事件时进行状态转换273. public void timeout() if (state = OPEN) setState(CLOSING); 274. 275. public void complete() /发生 complete 事件时进行状态转换276. if (state = OPENING) setState(OPEN);277. else if (state = CLOSING) setState(CLOSED);278. 279. 280. public static void main(String args) 281. Door aDoor = new Door();282. aDoor.getState(); aDoor.cli

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论