【计算机类职业资格】软件设计师-面向对象程序设计(一)及答案解析.doc
《【计算机类职业资格】软件设计师-面向对象程序设计(一)及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】软件设计师-面向对象程序设计(一)及答案解析.doc(17页珍藏版)》请在麦多课文档分享上搜索。
1、软件设计师-面向对象程序设计(一)及答案解析(总分:149.00,做题时间:90 分钟)阅读以下说明和 C+代码,将应填入 (n) 处的字句写在对应栏内。说明某绘图系统存在 Point、Line、Square 三种图元,它们具有 Shape 接口,图元的类图关系如图 18-1 所示。现要将 Circle 图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供了 XCircle 类,且完全满足系统新增的 Circle 图元所需的功能,但 XCircle 不是由 Shape 派生而来的,它提供的接口不能被系统直接使用。代码 18.1 既使用了 XCircle 又遵循了 Shape 规定的接口,既
2、避免了从头开发一个新的 Circle类,又可以不修改绘图系统中已经定义的接口。代码 18.2 根据用户指定的参数生成特定的图元实例,并对之进行显示操作。绘图系统定义的接口与 XCircle 提供的显示接口及其功能如表 18-1 所示。(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_阅读以下说明和 Java 代码,将应填入 (n) 处的字句写在对应栏内。说明某绘图系统存在 Point、Line、Square 三种图元,它们具有 Shape 接口,图元的类图关系如图 18-2 所示。现要将 Circle 图元加入此绘图系统以实现功能扩充。已知
3、某第三方库已经提供了 XCircle 类,且完全满足系统新增的 Circle 图元所需的功能,但 XCircle 不是由 Shape 派生而来的,它提供的接口不能被系统直接使用。代码 18.3 既使用了 XCircle 又遵循了 Shape 规定的接口,既避免了从头开发一个新的 Circle类,又可以不修改绘图系统中已经定义的接口。代码 18.4 根据用户指定的参数生成特定的图元实例,并对之进行显示操作。绘图系统定义的接口与 XCircle 提供的显示接口及其功能如表 18-2 所示。(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_阅读以
4、下说明和 C+代码,将应填入 (n) 处的字句写在对应栏内。说明在一公文处理系统中,开发者定义了一个公文类 OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文类的内容或状态发生变化时,关联此 OfficeDoc 类对象的相应的 DocExplorer 对象都要更新其自身的状态。一个 OfficeDoc 对象能够关联一组 DocExplorer 对象。当 OfficeDoc 对象的内容或状态发生变化时,所有与之相关联的 DocExplorer 对象都将得到通知,这种应用被称为观察者模式。以下代码写在一个 C+源文件中,能够正确编译通过。C+代码#includeiostrea
5、mconst OBS_MAXNUM=20/最多与 OfficeDoc 对象相关联的 DocExplorer 对象个数(1) ;class DocExplorer /关注 OfficeDoc 公文对象的类public:DocExplorer( (2) *doc); /构造函数(3) void update(OfficeDoc *doc)=0; /更新自身状态的函数/其他相关属性和方法省略class OfficeDoc/公文类private:DocExplorer *myObsOBS_MAXNUM;/关注此公文类的 DocExplorer 类对象指针数组int index;/与 OfficeDoc
6、 对象关联的 DocExplorer 对象的个数public:OffiCeDoc()index=0;void attach(DocExplorer *o)/将一 DocExplorer 对象与 OfficeDoc 对象相关联if(index=OBS_MAXNUM|o=NULL)return;for(int loop=0;loopindex;loop+)if(myOhs100p=o)return;myObsindex=o;index+;void detach(DocExplorer *o)/解除某 DocExplorer 对象与 OfficeDoc 对象的关联if(o=NULL)return;f
7、or(int loop=0;loopindex;loop+)if(myObs100p=o)if(loop=index-2)myObs100p=myObsindex-1;myObsindex-1=NULL;index-;break;private:void notifyObs()/通知所有的 DocExplorer 对象更改自身状态for(int loop=0;loopindex;loop+)myObsloop- (4) ;/DocExplorer 对象更新自身状态/其他公文类的相关属性和方法;DocExplorer:DocExplorer(OfficeDoc *doc)(/DocExplore
8、r 类对象的构造函数doc- (5) ; /将此 DocExplorer 对象与 doc 对象相关联(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_阅读以下说明和 Java 代码,将应填入 (n) 处的字句写在对应栏内。说明在一公文处理系统中,开发者定义了一个公文类 OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文类的内容或状态发生变化时,关联此 OfficeDoc 类对象的相应的 DocExplorer 对象都要更新其自身的状态。一个 OfficeDoc 对象能够关联一组 DocExplorer 对象。当 OfficeDoc
9、对象的内容或状态发生变化时,所有与之相关联的 DocExplorer 对象都将得到通知,这种应用被称为观察者模式。以下代码写在一个 Java 源文件中,能够正确编译通过。Java 代码/Subject.java 文件public interface Subjectpublic void attach(Observer DocExplorer);public void detach(Observer DocExplorer);void notifyObservers();/Observer.Java 文件public interface Obsever(void update( (1) );/O
10、fficeDoc.Java 文件import Java.util.*;public class OfficeDoc implements Subject/OfficeDoc 类实现 Subject 接口private Vector ObserverVector=new Java.util.Vector();/存储与 OfficeDoc 相关联的 DocExplorer 对象public void attach(Obsever observer)/将某 DocExplorer 对象与 OfficeDoc 相关联ObserverVector.addElement(observer);public
11、void detach(Observer observer)/解除某 DocExplorer 对象与 OfficeDoc 的关联关系ObsprverVector.removeElement(observer);public void notifyobserVers()/当 OfficeDoc 对象状态已发生变化时,通知所有的 DocExplorer 对象Enumeration enumeration= (2) ;while(enumeration.hasMoreElements()(Observer)enumeration.nextElement(). (3) ;public Enumerat
12、ion Observers()return ObserverVector.elements();/其他公文类的属性和方法省略/DocExplorer.java 文件public class DocExplorer implements (4) public void update( (5) )/更新 DocExplorer 自身的状态,代码省略(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_阅读以下说明和 C 代码,将应填入 (n) 处的字句写在对应栏内。说明在一公文处理系统中,开发者定义了一个公文结构 OfficeDoc,其中定义了公文应该具有的属性
13、。当公文类的内容或状态发生变化时,与之相关联的 DocExplorer 结构的值都需要发生改变。一个 OfficeDoc 结构能够关联一组 DocExplorer 结构。当 OfficeDoc 结构的内容或状态发生变化时,所有与之相关联的DocExplorer 结构都将被更新,这种应用被称为观察者模式。以下代码采用 C 语言实现,能够正确编译通过。C 代码#includestdio.h#define OBS_MAXNUM 20/*一个 OfficeDoc 变量最多能够关联的 DocExplorer 变量的个数*/typedef void( (1) )(struc OfficeDoc *,str
14、uct DocExplorer *);Struet DocExplorerfunc update; /*DocExplorer 结构采用的更新函数*/*其他的结构字段省略*/;struct OffiCeDoc(2) myObsOBS_MAXNUM;/*存储所有与 OfficeDoc 相关联的 DocExplorer 结构指针*/int index;/*与 OfficeDoc 结构变量相关联的 DocExplorer 结构变量的个数*/;void attach(struct OfficeDoc *doc,struct DocExplorer *ob)/*关联 Obersver 结构 ob 与 O
15、fficeDoc 结构 doc*/int loop=0;if(doc-index=OBS_MAXNUM|ob=NULL)return;for(loop=0;loopdoc-index;loop+)if(doc-myObsloop=ob)return;doc-myObsdoc-index=ob;doc-index+;void detach(Struct OfficeDoc *doc,struct DocExplorer *ob)/*解除 doc 结构与 ob 结构间的关系*/int loop;if(ob=NULL)return;for(loop=0;loopdoc-index;loop+)if(
16、doc-myObsloop=ob)if(loop=doc-index-2)doc-myObsloop=doc-myObs (3) ;doc-myObsdoc-index-1=NULL;doc-index-;breack;void updatel(Struct OfficeDoc *doc,struct DocExplorer *ob)/*更新 ob 结构的值,更新代码省略*/void update2(struct OfficeDoc *doc,struct DocExplorer *ob)/*更新 ob 结构的值,更新代码省略*/void notifyObs(struct OfficeDoc
17、*doc)/*当 doc 结构的值发生变化时,通知与之关联的所有 DocExplorer 结构变量*/int loop;for(loop=0;loopdoc-index;loop+)(doc-myObsloop)-update( (4) );void msin()struct OfficeDoc doc; /*定义一个 OfficeDoc 变量*/struct DocExplorer explorer1,explorer2; /*定义两个 DocExplorer 变量*/*初始化与 OfficeDoc 变量相关的 DocExplorer 变量个数为 0*/doc.index=0;explore
18、r1.update=update1; /*设置 explorer1 变量的更新函数*/explorer2.update=update2; /*设置 explorer2 变量的更新函数*/attach(doc,explorer1);/关联 explorer1 与 doc 对象*/attach(doc,explorer2);/*关联 explorer2 与 doc 对象*/*其他代码省略*/(5) ;/*通知与 OfficeDoc 相关的所有 DocExplorer 变量*/return;(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_阅读下列说明、图和
19、C+代码,将应填入 (n) 处的字句写在对应栏内。说明某订单管理系统的部分 UML 类图如图 18-3 所示。(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_阅读下列说明、图及 Java 程序,将应填入 (n) 处的字句写在对应栏内。说明某订单管理系统的部分 UML 类图如图 18-4 所示。(分数:15.00)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_阅读以下说明和 C+代码,将应填入 (n) 处的字句写在对应栏内。说明传输门是传输系统中的重要装置。传输门具有 Open(打开)、Closed(已关闭)、Opening(正在
20、打开)、StayOpen(保持打开)、Closing(正在关闭)5 种状态。触发传输门状态转换的事件有 crick、complete 和timeout 三种。事件与其相应的状态转换如图 18-5 所示。(分数:14.98)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_阅读以下说明及 Java 程序,将应填入 (n) 处的字句写在对应栏内。说明传输门是传输系统中的重要装置。传输门具有 Open(打开)、Closed(已关闭)、Opening(正在打开)、StayOpen(保持打开)、Closing(正在关闭)5 种状态。触发状态的转换事件有 c
21、rick、complete 和 timeout三种。事件与其相应的状态转换如图 18-6 所示。(分数:14.98)填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_填空项 1:_阅读下列说明和 C+代码,将应填入 (n) 处的字句写在对应栏内。说明某游戏公司现欲开发一款面向儿童的模拟游戏,该游戏主要模拟现实世界中各种鸭子的发声特征、飞行特征和外观特征。游戏需要模拟的鸭子种类及其特征如表 18-4 所示。表 18-4 鸭子各类及其特征鸭子种类 发声特征 飞行特征 外现特征灰鸭(MallardDuck)发出“嘎嘎”声(Quack)用翅膀飞行(FlyWithWin
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 软件 设计师 面向 对象 程序设计 答案 解析 DOC
