[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)历年真题试卷汇编6及答案与解析.doc
《[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)历年真题试卷汇编6及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)历年真题试卷汇编6及答案与解析.doc(18页珍藏版)》请在麦多课文档分享上搜索。
1、软件水平考试(中级)软件设计师下午(应用技术)历年真题试卷汇编 6及答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征。需要模拟的飞机种类及其特征如表 164所示。为支持将来模拟更多种类的飞机,采用策略设计模式 (Strategy)设计的类图如图 16一 12所示。图 1612中, AirCraft为抽象类,描述了抽象的飞机,而类 Helicopter、AirPlane、 Fighter和 Harrier分别描述具体的飞机 种类,方法 ny()和 takeOff()分别表示不同飞机都具有飞行特征和
2、起飞特征;类 FlyBehavior与 TakeOffiehaVior为抽象类,分别用于表示抽象的飞行为与起飞行为;类 SubSonicFly与 SuperSonicFly分别描述亚音速飞行和超音速飞行的行为;类 VerticalTakeOff与LongDistanceTakeOff分别描述垂直起飞与长距离起飞的行为。 【 C+代码】 #include USing namespace std; ClasS FlyBehaVior public: virtual void fly()=0; ; class SubSonicFly: public FlyBehavior( public: void
3、 fly()(cout 2 阅读下列说明和 Java代码,将应填入 (n)处的字句写在答题纸的对应栏内。 【说明】现要求实现一个能够自动生成求职简历的程序,简历的基本内容包括求职者的姓名、性别、年龄及工作经历。希望每份简历中的工作经历有所不同,并尽量减少程序中的重复代码。现采用原型模式 (Prototype)来实现上述要求,得到如图 171所示的类图。 Java代 码 Class WorkExperience (1)Cloneable(工作简历 Private String workDate; Private String company; Public Object Clone() (2);
4、 obj workDate=thi s workDate; Obj companythi s company; Return obj; Class Resume (3) Cloneable( 简历 Private String name; Private String sexj Private String age; Private WorkExperience work; Public Resume(String name) Thi s name=name; work=new WorkExperience(); Private Resume(WorkExperience work) This
5、 woek= (4); Public void SetPersonalInfo(String sex, String age)( *代码省略 * ) Public void SetWorkExperience(String workDate, String company)( *代码省略 * ) Public Object Clone()( Resume obj= (5) ; 其余代码省略 Return obj; Class WorkResume( Public static void main(Stringargs)( Resume a=new Resume(“张三 ”); ASetPers
6、onalInfo(“男 ”, “29”); a.setworkExperience(“19982000”, “XXX公司 ”); Resume b=(6); b.SetWorkExperience(”2 001 2 006”, ”YYY公司 ”; 3 阅读以下说明和 Java代码,将应填入 (n)处的字句写在对应栏内。【说明】欲开发一个绘图软件,要求使用不同的绘图程序绘制不同的图形。以绘制直线和圆形为例,对应的绘图程序如表 171所示。该绘图软件的扩展性要求,将不断扩充新的图形和新的绘图程序。为了避免出现类爆炸的情况,现采用桥接 (Bridge)模式来实现上述要求,得 到如图 172所示的类图
7、。Java代码 (1)Drawing( (2) ; (3) ; ciass DPI( static public void draw aline(double xl, double y1, double x2, double y2) ( *代码省略 * ) static public void drawacircle(double x, double y, double r)( *代码省略 * ) ; Class DP2 static pubiic void drawline(double x1, double x2, double y1, double y2) ( *代码省略 * ) sta
8、tic public void drawcircle(double x, double Y, double r)( *代码省略 * ) ; class VlDrawing implements Drawing( public void drawLine(double xl, double yl, double x2, doubIe y2)( *代码省略 * ) public void drawCircle(double X, double Y, double r)( (4) ; ) ; class V2Drawing implementS Drawing( public void drawLi
9、ne(double xl, double yl, double x2, double y2) *代码省略 * ) public void drawCircie(doubie X, double y, double r)( (5) ; ) ; abstract class Shape( private Drawingdp; (6) ; Shape(Drawing dp)_dp=dp; ) publ ic void drawLine(double xl, double yl, double x2, double y2)(_ dp drawLine(x1, y1, x2, y2); ) public
10、 void drawCircle(double X, double Y, doubler)(一 dp drawCircle(x, y, r); ) ; Class Rectangle extends Shape( private double_x1, _x2,_y1,_y2; public Rectangle(Drawing dp, double xl, double yl, double x2, double y2) *代码省略 * public void draw()( 代码省略。 ) ; ClasS Circle extends Shape private double x, _y, _
11、r; public Circle(Drawing dp, double x, double Y, double r)( *代码省略 * public void draw()(drawCircle(_x, _y, _r); ; 4 现欲开发一个软件系统,要求能够同时支持多种不同的数据库,为此采用抽象工厂模式设计该系统。以 SQL SerVer和 Access两种数据库以及系统中的数据库表Depanment为例,其类图如图 173所示。Java代码 import java.util*; clasS Department( *代码省略 * )interface IDepartment( (1) ;
12、(2) ; class SqlserVerDepar七 men七: (3) public: void Insert(Department department) System out print in(”Insert a record into Department in SQL Servern”); 其余代码省略 publ i c Department GetDepar七 men七 (int id)0)tiSsureMachine setState(4);e1SetissureMachine setState(5); 7 阅读下列说明和 Java代码,将应填入 (n)处的字句写在答题纸的对应
13、栏内。【说明】某公司的组织结构图如图 179所示,现采用组合 (Composition)设计模式来设计,得到如图 1710所示的类图。其中 Company为抽象类,定义了在组织结构图上添加 (Add)和删除 (Delete)分公司办事处或者部门的方法接口。类 ConcreteCompany表示具体的分公司或者办事处,分公司或办事处下可以 设置不同的部门。类 HRDepament和FinanceDepartment分别表示人力资源部和财务部。 Java代码 importjava.util.*:(1)CompanyprotectedStringname;publicCompany(Stringna
14、me)(2)=name; DublicabstractvoidAdd(Companyc);增加子公司、办事处或部门 DublicabstractvoidDelete(Companyc);删除子公司、办事处或部门 C1assConcreteCompanyextendsCompanyprivateListchildren=newArrayList();存储子公司、办事处或部门publicConcreteCompany(Stringname)super(name); )publiCvoidAdd(Companyc)(5)addc;)publicvoidDelete(Companyc)(6) remo
15、ve(C); )C1assHRDepartmentextendsCompany(publiCHRDepartment(Stringname)(super(name); )其他代码省略 C1assFinanceDepartmentextendsCompany(publicFinanceDepartment(Stringname)(super(name); )其他代码省略 publiCClassTestpublicstatiCvoidmain(Stringargs)(c。ncretecompanyroot=newconcretecompany(“北京总公司 ”);root Add(newHRDep
16、artment(”总公司人力资源部 ”);root Add(newFinanceDepartment(“总公司财务部 ”);concretecompanycomp=newcOncretecompany(“上海分公司 ”);comp Add(newHRDepartment(“上海分公司人力资源部 ”);comp Add(newFinanceDepartment(“上海分公司财务部 ”); (7);ConcreteCompanycompl=newconcretecompany(”南京办事处 ”);compl Add(newHRDepartment(”南京办事处人力 资源部 ”);compl Add
17、(newFinanceDepartment(”南京办事处财务部 ”); (8);其他代码省略 8 阅读下列说明和 Java代码,将应填入 (n)处的字句写在答题纸的对应栏内。【说明】某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征。需要模拟的飞机种类及其特征如表 173所示。为支持将来模拟更多种类的飞机,采用策略设计模式 (Strategy)设计的类图如图1711所示。图 1711中, AirCraft为抽象类,描述了抽象的飞机,而类 Helicopter、AirPlane、 Fighter和 Harrier分别描述具体的飞机种类,方法 fly()和 ta
18、keOff()分别表示不同飞机都具有飞行特征和起飞特征类 FlyBehavior与 TakeOffBehavior为抽象类,分别用于表示抽象的飞行为与起飞行为;类 SubSonicFly与 SuperSonicFly分别描述亚音速飞行和超音速飞行的行为;类 VerticalTakeOff与L0ngDistanceTakeoff分别描述垂直起飞 与长距离起飞的行为。 Java代码 interfaceFlyBehavior(publiCVOidfly(); ;classSubSonicFlyimplementsFlyBehaVior(publicvoidfly()(System out print
19、in(“亚音速飞行 !”); );ClassSuperSonicFlyimplementsFlyBehaVior(publicvoidfly()(System out println(”超音速飞行 !”); ); interfaceTakeOffBehaviorpublicvoidtakeOff(); ;ClassVerticalTakeOffimplementsTakeOffBehavior(publicvoidtakeOff()(System out println(“垂直起飞 !”); );ClassLongDistanceTakeOffimplementsTakeOffBehavior
20、publicvoidtakeOff() 软件水平考试(中级)软件设计师下午(应用技术)历年真题试卷汇编 6答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 【正 确答案】 (1)FlyBehavior*flyBehavior。 (2)TakeOffBehavior*takeOffBehavior (3)flyBehavior一 fly() (4)takeOffBehavior一 takeoff()_ (5)SubSonicFly (6)VerticalTakeOff() (7) Helicopter() 注:空 (1)与空 (2)参考答案可互换 【试题解析】 本题考查了设计模式中的
21、策略设计模式。 从本题的叙述中可以看出,存在 4种不同的飞机类型,但每种飞机类型的起飞特征和飞行特征并不完全相同,这就使得我们很难采用比较直接的方法来实现重用。例如,定义一个抽象的飞机类,实现飞机的起飞特性,然后 4种飞机直接重用该特征。但是,我们可以观察到,尽管飞机的起飞特征和飞行特征有所不同,有一点可以肯定的是,每一种飞机都具备了飞行特征和起飞特征。因此,可以抽象出一个飞机类,其中含有飞行特征与起飞特征,但关于两个特征的实现要单独抽取出来,所以义形成了 FlyBehavior类和 TakeOffBehavior类分别表 示抽象的飞行和起飞特征,而这两个类的子类则分别实现不同的起飞和飞行特征
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 软件 水平 考试 中级 设计师 下午 应用技术 历年 汇编 答案 解析 DOC
