首页
试卷库
试题库
当前位置:
X题卡
>
所有题目
>
题目详情
【说明】 设有下列关于图书借阅系统的E—R图。图中矩形表示实体,圆表示属性,双圆表示关键字属性,菱形表示实体间的联系。假定已通过下列SQL语言建立了基本表: CREATE TABLE ...
查看本题答案
包含此试题的试卷
中级软件设计师《问答集》真题及答案
点击查看
你可能感兴趣的试题
设有关系模式图书借阅读者号图书号借阅日期还书日期其中的读者号是这个关系模式的______属性
[说明]图书馆藏书管理系统完成用户信息管理借阅归还信息管理馆藏书目的信息管理违规处罚管理和各种查询等
阅读下列说明和数据流图回答问题1至问题3[说明]图书管理系统旨在用计算机对图书进行管理包括图书的购入
[说明] 图书管理系统详细记录图书库存情况读者信息以及读者借阅记录包括借书日期和还书日期
试题一 阅读下列说明和图回答问题1至问题4将解答填入答题纸的对应栏内 [说明] 某
阅读下列说明和图回答问题1至问题3将解答填入答题纸的对应栏内 说明:某高校图书馆欲建设一个
阅读以下说明和图回答问题1至问题3 [说明] 图书馆藏书管理系统完成用户信息管理借阅归还信息管理
试题一 阅读下列说明和图回答问题1至问题4将解答填入答题纸的对应栏内 [说明] 某
阅读下列说明和数据流图回答问题1至问题3[说明]图书管理系统旨在用计算机对图书进行管理包括图书的购入
[说明] 图书管理系统详细记录图书库存情况读者信息以及读者借阅记录包括借书日期和还书日期
试题一 阅读下列说明和图回答问题1至问题4将解答填入答题纸的对应栏内 【说明】 某
[说明]图书馆藏书管理系统完成用户信息管理借阅归还信息管理馆藏书目的信息管理违规处罚管理和各种查询等
试题一 阅读下列说明和图回答问题1至问题4将解答填入答题纸的对应栏内 【说明】 某
[说明] 图书管理系统详细记录图书库存情况读者信息以及读者借阅记录包括借书日期和还书日期
阅读下列说明和图回答问题1至问题3 【说明】 图书管理系统详细记录图书库存情况读者信息及读者借阅
试题一 阅读下列说明和图回答问题1至问题4将解答填入答题纸的对应栏内 【说明】 某
试题一 阅读下列说明和图回答问题1至问题4将解答填入答题纸的对应栏内 [说明] 某
阅读以下说明和图回答问题1至问题3 [说明] 图书馆藏书管理系统完成用户信息管理借阅归还信息管理
试题一 阅读下列说明和图回答问题1至问题4将解答填入答题纸的对应栏内 【说明】 某
试题一 阅读下列说明和图回答问题1至问题4将解答填入答题纸的对应栏内 [说明] 某
热门试题
更多
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 已知某企业欲开发一个家用电器遥控系统即用户使用一个遥控器即可控制某些家用电器的开与关遥控器如图18-11所示该遥控器共有4个按钮编号分别是0~3按钮0和2能够遥控打开电器1和电器2按钮1和3则能遥控关闭电器1和电器2由于遥控系统需要支持形式多样的电器因此该系统的设计要求具有较高的扩展性现假设需要控制客厅电视和卧室电灯对该遥控系统进行设计所得类图如图18-12所示 在图18-12中类RomoteController的方法onPressButtonintbutton表示当遥控器按键按下时调用的方法参数为按键的编号Command接口中的on和off方法分别用于控制电器的开与关Light中的mrnLightintdegree方法用于调整电灯灯光的强弱参数degree值为0时表示关灯值为100时表示开灯并且将灯光亮度调整到最大TV中的setChannelintchannel方法表示设置电视播放的频道参数channel值为0时表示关闭电视值为1时表示打开电视并将频道切换为第1频道 [C++代码] classLight//电灯类 public voidturnLightintdegree//调整灯光亮度0表示关灯100表示亮度最大 classTV//电视机类 public voidsetChannelintchannel//调整频道0表示关机1表示开机并切换到第1频道 classCommand//抽象命令类 public virtualvoidon=0 virtualvoidoff=0 classRemoteController//遥控器类 protected Command*commands[4]//遥控器有4个按钮按照编号分别对应4个Command对象 public voidonPressButtonintbutton//按钮被按下时执行命令对象中的命令 ifbutton%2==0commands[button]->on elsecommands[button]->off voidsetCommandintbuttonCommand*command 1=command//设置每个按钮对应的命令对象 classLightCommandpublicCommand//电灯命令类 protectedLight*light//指向要控制的电灯对象 public voidonlight->turnLight100 voidofflight->2 LightCommandLight*lightthis->light=light classTVCommandpublicCommand//电视机命令类 protectedTV*tv//指向要控制的电视机对象 public voidontv->3 voidofftv->setChannel0 TVCommandTV*tvthis->tv=tv voidmain LightlightTvtv//创建电灯和电视对象 LightCommandlightCommand&light TVCommandtvCommand&tv RemoteControilerremoteController remoteController.setCommand04//设置按钮0的命令对象 ……//此处省略设置按钮1按钮2和按钮3的命令对象代码 本题中应用命令模式能够有效让类5和类6类7之间的耦合性降至最小 7处填
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 已知某类库开发商提供了一套类库类库中定义了Application类和Document类它们之间的关系如图18-15所示其中Application类表示应用程序自身而Document类则表示应用程序打开的文档Application类负责打开一个已有的以外部形式存储的文档比如一个文件一旦从该文件中读出信息后它就由一个Document对象表示 当开发一个具体的应用程序时开发者需要分别创建自己的Application和Document子类例如图18-15中的类MyApplication和类MyDocument并分别实现Application类和Document类中的某些方法 已知Application类中的openDocument方法采用了模板方法TemplateMethod设计模式该方法定义了打开文档的每一个主要步骤如下所示 1检查文档是否能够被打开若不能打开则给出出错信息并返回 2创建文档对象 3通过文档对象打开文档 4通过文档对象读取文档信息 5将文档对象加入到Application的文档对象集合中 [C++代码] #include<iostream> #include<vector> usingnamespacestd C1assDocument public voidsave/*存储文档数据此处代码省略*/ voidopenstringdocName/*打开文档此处代码省略*/ voidclose/*关闭文档此处代码省略*/ virtualvoidreadStringdocName=0 classAppplication private vector<1>docs/*文档对象集合*/ public boolcanopenDocumentStringdocName /*判断是否可以打开指定文档返回真值时表示可以打开返回假时值表示不可打开此处代码省略*/ voidaddDocumentDocument*aD0cument /*将文档对象添加到文档对象集合中*/ docs.push_back2 virtualDocument*doCreateDocument=0/*创建一个文档对象*/ voidopenDocumentstringdocName/*打开文档*/ if3 cout<<"文档无法打开!"<<end1 return 4adoc=5 6 7 8 7处填
阅读下列说明和Java代码将应填入n处的字句写在对应栏内 [说明] 已知某企业欲开发一个家用电器遥控系统即用户使用一个遥控器即可控制某些家用电器的开与关遥控器如图18-13所示该遥控器共有4个按钮编号分别是0~3按钮0和2能够遥控打开电器1和电器2按钮1和3则能遥控关闭电器1和电器2由于遥控系统需要支持形式多样的电器因此该系统的设计要求具有较高的扩展性现假设需要控制客厅电视和卧室电灯对该遥控系统进行设计所得类图如图18-14所示 在图18-14中类RomoteController的方法onPressButtonintbutton表示当遥控器按键按下时调用的方法参数为按键的编号Command接N中的On和off方法分别用于控制电器的开与关Light中的mrnLightintdegree方法用于调整电灯灯光的强弱参数degree值为0时表示关灯值为100时表示开灯并且将灯光亮度调整到最大TV中的setChannelintchannel方法表示设置电视播放的频道参数channel值为0时表示关闭电视值为1时表示打开电视并将频道切换为第1频道 [Java代码] classLight//电灯类 publicvoidturnLightintdegree//调整灯光亮度0表示关灯100表示亮度最大 classTV//电视机类 PublicvoidsetChannelintchannel//0表示关机1表示开机并切换到第1频道 interfaceCommand//抽象命令类 voidon voidoff classRemoteController//遥控器类 protectedCommand[]commands=newCommand[4] //遥控器有4个按钮按照编号分别对应4个Command对象 publicvoidonPressButtonintbutton //按钮被按下时执行命令对象中的命令 ifbutton%2==0commands[button].on elsecommands[button].off publicvoidsetCommandintbuttonCommandcommand 1=command//设置每个按钮对应的命令对象 classLightCommandimplementsCommand//电灯命令类 protectedLightlight//指向要控制的电灯对象 publicvoidonlight.turnLight100 publicvoidofflight.2 publicLightCommandLightlightthis.light=light classTVCommandimplementsCommand//电视机命令类 protectedTvtv//指向要控制的电视机对象 publicvoidontv.3 publicvoidofftv.setChannel0 publicTVCommandTVtvthis.tv=tv publicclassrs publicstaticvoidmainString[]args Lightlight=newLightTVtv=newTV//创建电灯和电视对象 LightCommandlightCommand=newLightCommandlight TVCommandtvCommand=newTVCommandtv RemoteControllerremoteControllet=newRemoteController //设置按钮和命令对象 remoteController.setCommand04 …//此处省略设置按钮1按钮2和按钮3的命令对象代码 本题中应用命令模式能够有效让类5和类6类7之间的耦合性降至最小 2处填
阅读下列说明和Java代码将应填入n处的字句写在对应栏内 [说明] 已知某企业欲开发一个家用电器遥控系统即用户使用一个遥控器即可控制某些家用电器的开与关遥控器如图18-13所示该遥控器共有4个按钮编号分别是0~3按钮0和2能够遥控打开电器1和电器2按钮1和3则能遥控关闭电器1和电器2由于遥控系统需要支持形式多样的电器因此该系统的设计要求具有较高的扩展性现假设需要控制客厅电视和卧室电灯对该遥控系统进行设计所得类图如图18-14所示 在图18-14中类RomoteController的方法onPressButtonintbutton表示当遥控器按键按下时调用的方法参数为按键的编号Command接N中的On和off方法分别用于控制电器的开与关Light中的mrnLightintdegree方法用于调整电灯灯光的强弱参数degree值为0时表示关灯值为100时表示开灯并且将灯光亮度调整到最大TV中的setChannelintchannel方法表示设置电视播放的频道参数channel值为0时表示关闭电视值为1时表示打开电视并将频道切换为第1频道 [Java代码] classLight//电灯类 publicvoidturnLightintdegree//调整灯光亮度0表示关灯100表示亮度最大 classTV//电视机类 PublicvoidsetChannelintchannel//0表示关机1表示开机并切换到第1频道 interfaceCommand//抽象命令类 voidon voidoff classRemoteController//遥控器类 protectedCommand[]commands=newCommand[4] //遥控器有4个按钮按照编号分别对应4个Command对象 publicvoidonPressButtonintbutton //按钮被按下时执行命令对象中的命令 ifbutton%2==0commands[button].on elsecommands[button].off publicvoidsetCommandintbuttonCommandcommand 1=command//设置每个按钮对应的命令对象 classLightCommandimplementsCommand//电灯命令类 protectedLightlight//指向要控制的电灯对象 publicvoidonlight.turnLight100 publicvoidofflight.2 publicLightCommandLightlightthis.light=light classTVCommandimplementsCommand//电视机命令类 protectedTvtv//指向要控制的电视机对象 publicvoidontv.3 publicvoidofftv.setChannel0 publicTVCommandTVtvthis.tv=tv publicclassrs publicstaticvoidmainString[]args Lightlight=newLightTVtv=newTV//创建电灯和电视对象 LightCommandlightCommand=newLightCommandlight TVCommandtvCommand=newTVCommandtv RemoteControllerremoteControllet=newRemoteController //设置按钮和命令对象 remoteController.setCommand04 …//此处省略设置按钮1按钮2和按钮3的命令对象代码 本题中应用命令模式能够有效让类5和类6类7之间的耦合性降至最小 6处填
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 已知某类库开发商提供了一套类库类库中定义了Application类和Document类它们之间的关系如图18-15所示其中Application类表示应用程序自身而Document类则表示应用程序打开的文档Application类负责打开一个已有的以外部形式存储的文档比如一个文件一旦从该文件中读出信息后它就由一个Document对象表示 当开发一个具体的应用程序时开发者需要分别创建自己的Application和Document子类例如图18-15中的类MyApplication和类MyDocument并分别实现Application类和Document类中的某些方法 已知Application类中的openDocument方法采用了模板方法TemplateMethod设计模式该方法定义了打开文档的每一个主要步骤如下所示 1检查文档是否能够被打开若不能打开则给出出错信息并返回 2创建文档对象 3通过文档对象打开文档 4通过文档对象读取文档信息 5将文档对象加入到Application的文档对象集合中 [C++代码] #include<iostream> #include<vector> usingnamespacestd C1assDocument public voidsave/*存储文档数据此处代码省略*/ voidopenstringdocName/*打开文档此处代码省略*/ voidclose/*关闭文档此处代码省略*/ virtualvoidreadStringdocName=0 classAppplication private vector<1>docs/*文档对象集合*/ public boolcanopenDocumentStringdocName /*判断是否可以打开指定文档返回真值时表示可以打开返回假时值表示不可打开此处代码省略*/ voidaddDocumentDocument*aD0cument /*将文档对象添加到文档对象集合中*/ docs.push_back2 virtualDocument*doCreateDocument=0/*创建一个文档对象*/ voidopenDocumentstringdocName/*打开文档*/ if3 cout<<"文档无法打开!"<<end1 return 4adoc=5 6 7 8 5处填
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 现欲构造一棵文件/目录树采用组合Composite设计模式来设计得到的类图如图18-19所示 [C++代码] #include<list> #include<iostream> #include<string> uslngnamesPacestd classAbStractFile protected stringname//文件或目录名称 public voidprintNamecout<<name//打印文件或目录名称 virtualcoidaddChildAbstractFile*file=0 //给一个目录增加子目录或文件 virtualvoidremoveChildAbstractFile*file=0 //删除一个目录的子目录或文件 virtuallist<AbstractFile*>*getChiidren=0 //获得一个目录的子目录或文件 classFilepublicAbstractFile public Filestringname1=name voidaddChildAbstractFile*filereturn voidremoveChildAbstractFile*filereturn 2getChiidrenreturn3 classFolderpublicAbstractFile private list<AbstractFile*>childList//存储子目录或文件 public Folderstringname4=name voidaddChiidAbstractFile*filechiidList.push_backfile voidremoveChiIdAbstractFile*filechiidList.removefile list<AbstractFile*>*getchildrenreturn5 voidmsin //构造一个树形的文件/目录结构 AbstractFile*rootFolder=newFolder"C://" AbstractFile*compositeFolder=newFolder"composite" AbstractFile*windowsFolder=newFolder"windows" AbstractFile*file=newFile"TestComposite.java" rootFolder->addChildcompositeFolder rootFolder->addChiidwindowsFolder compositeFolder->addChiidfile 1处填
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 已知某企业的采购审批是分级进行的即根据采购金额的不同由不同层次的主管人员来审批主任可以审批5万元以下不包括5万元的采购单副董事长可以审批5万元至10万元不包括10万元的采购单董事长可以审批10万元至50万元不包括50万元的采购单50万元及以上的采购单就需要开会讨论决定 采用责任链设计模式ChainofResponsibility对上述过程进行设计后得到的类图如图18-9所示 [C++代码] #include<string> #include<iostream> usingnamespacestd classPurchaseRequest public doubleAmount//采购的金额 intNumber//采购单编号 stringPurpose//采购目的 classApprover//审批者类 public Approversuccessor=NULL virtualvoidProcessRequestPurchaseRequestaRequest ifsuccessor!=NULLsuccessor->1 voidSetSuccessorApprover*aSucceSSsorsuccessor=aSuccesssor private 2successor classCongresspublicApprover public voidProcessRequestPurchaseRequeStaRequest ifaRequest.Amount>=500000/*决定是否审批的代码省略*/ else3ProceSsRequestaRequest classDirectorpublicApprover publlc voidProcessRequestPurchaseRequestaRequest/*此处代码省略*/ classPresidentpublicApprover public voidProcessRequestPurchaseRequestaRequest/*此处代码省略*/ classVicePresidentpublicApprover public voidProcessRequestPurchaseRequestaRequest/*此处代码省略*/ voidmsin CongressMeetingVicePresidentSamDirectorLarryPresidentTammy //构造责任链 Meeting.SetSuccessorNULLSam.SetSuccessor4 Tammy.SetSuccessor5Larry.SetSuccessot6 PurchaseRequestaRequest//构造采购审批请求 cin>>aRequest.Amount//输入采购请求的金额 7.ProcessRequestaRequest//开始审批 return 7处填
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 现欲实现一个图像浏览系统要求该系统能够显示BMPJPEG和GIF三种格式的文件并且能够在Windows和Linux两种操作系统上运行系统首先将BMPJPEG和GIF三种格式的文件解析为像素矩阵然后将像素矩阵显示在屏幕上系统需具有较好的扩展性以支持新的文件格式和操作系统为满足上述需求并减少所需生成的子类数目采用桥接Bridge设计模式进行设计所得类图如图18-17所示 采用该设计模式的原因在于系统解析BMPGIF与JPEG文件的代码仅与文件格式相关而在屏幕上显示像素矩阵的代码则仅与操作系统相关 [C++代码] clasSMatrix//各种格式的文件最终都被转换为像素矩阵 //此处代码省略 classImageImp public virtualvoiddoPaintMatrixm=0//显示像素矩阵m classWinlmppublicImageImp public voiddoPaintMatrixm/*调用Windows系统的绘制函数绘制像素矩阵*/ classLinuxlmppublicImagelmp public voiddoPaintMatrixm/*调用Linux系统的绘制函数绘制像素矩阵*/ classImage public voidsetImpImagelmp*imp1=imp virtualvoidparseFiiestringfileName=0 protected 2*imp classBMPpublicImage public voidparseFilestringfileName //此处解析BMP文件并获得一个像素矩阵对象m 3//显示像素矩阵m classGIF://publicImage //此处代码省略 classJPEG://publicImage //此处代码省略 voidmain //在Windows操作系统上查看demo.bmp图像文件 Image*imagel=4 ImageImp*imageImpl=5 6 imagel->parseFile"demo.bmp" 现假设该系统需要支持10种格式的图像文件和5种操作系统不考虑类Matrix若采用桥接设计模式则至少需要设计7个类 7处填
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 现欲实现一个图像浏览系统要求该系统能够显示BMPJPEG和GIF三种格式的文件并且能够在Windows和Linux两种操作系统上运行系统首先将BMPJPEG和GIF三种格式的文件解析为像素矩阵然后将像素矩阵显示在屏幕上系统需具有较好的扩展性以支持新的文件格式和操作系统为满足上述需求并减少所需生成的子类数目采用桥接Bridge设计模式进行设计所得类图如图18-17所示 采用该设计模式的原因在于系统解析BMPGIF与JPEG文件的代码仅与文件格式相关而在屏幕上显示像素矩阵的代码则仅与操作系统相关 [C++代码] clasSMatrix//各种格式的文件最终都被转换为像素矩阵 //此处代码省略 classImageImp public virtualvoiddoPaintMatrixm=0//显示像素矩阵m classWinlmppublicImageImp public voiddoPaintMatrixm/*调用Windows系统的绘制函数绘制像素矩阵*/ classLinuxlmppublicImagelmp public voiddoPaintMatrixm/*调用Linux系统的绘制函数绘制像素矩阵*/ classImage public voidsetImpImagelmp*imp1=imp virtualvoidparseFiiestringfileName=0 protected 2*imp classBMPpublicImage public voidparseFilestringfileName //此处解析BMP文件并获得一个像素矩阵对象m 3//显示像素矩阵m classGIF://publicImage //此处代码省略 classJPEG://publicImage //此处代码省略 voidmain //在Windows操作系统上查看demo.bmp图像文件 Image*imagel=4 ImageImp*imageImpl=5 6 imagel->parseFile"demo.bmp" 现假设该系统需要支持10种格式的图像文件和5种操作系统不考虑类Matrix若采用桥接设计模式则至少需要设计7个类 1处填
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 已知某企业欲开发一个家用电器遥控系统即用户使用一个遥控器即可控制某些家用电器的开与关遥控器如图18-11所示该遥控器共有4个按钮编号分别是0~3按钮0和2能够遥控打开电器1和电器2按钮1和3则能遥控关闭电器1和电器2由于遥控系统需要支持形式多样的电器因此该系统的设计要求具有较高的扩展性现假设需要控制客厅电视和卧室电灯对该遥控系统进行设计所得类图如图18-12所示 在图18-12中类RomoteController的方法onPressButtonintbutton表示当遥控器按键按下时调用的方法参数为按键的编号Command接口中的on和off方法分别用于控制电器的开与关Light中的mrnLightintdegree方法用于调整电灯灯光的强弱参数degree值为0时表示关灯值为100时表示开灯并且将灯光亮度调整到最大TV中的setChannelintchannel方法表示设置电视播放的频道参数channel值为0时表示关闭电视值为1时表示打开电视并将频道切换为第1频道 [C++代码] classLight//电灯类 public voidturnLightintdegree//调整灯光亮度0表示关灯100表示亮度最大 classTV//电视机类 public voidsetChannelintchannel//调整频道0表示关机1表示开机并切换到第1频道 classCommand//抽象命令类 public virtualvoidon=0 virtualvoidoff=0 classRemoteController//遥控器类 protected Command*commands[4]//遥控器有4个按钮按照编号分别对应4个Command对象 public voidonPressButtonintbutton//按钮被按下时执行命令对象中的命令 ifbutton%2==0commands[button]->on elsecommands[button]->off voidsetCommandintbuttonCommand*command 1=command//设置每个按钮对应的命令对象 classLightCommandpublicCommand//电灯命令类 protectedLight*light//指向要控制的电灯对象 public voidonlight->turnLight100 voidofflight->2 LightCommandLight*lightthis->light=light classTVCommandpublicCommand//电视机命令类 protectedTV*tv//指向要控制的电视机对象 public voidontv->3 voidofftv->setChannel0 TVCommandTV*tvthis->tv=tv voidmain LightlightTvtv//创建电灯和电视对象 LightCommandlightCommand&light TVCommandtvCommand&tv RemoteControilerremoteController remoteController.setCommand04//设置按钮0的命令对象 ……//此处省略设置按钮1按钮2和按钮3的命令对象代码 本题中应用命令模式能够有效让类5和类6类7之间的耦合性降至最小 3处填
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 已知某企业的采购审批是分级进行的即根据采购金额的不同由不同层次的主管人员来审批主任可以审批5万元以下不包括5万元的采购单副董事长可以审批5万元至10万元不包括10万元的采购单董事长可以审批10万元至50万元不包括50万元的采购单50万元及以上的采购单就需要开会讨论决定 采用责任链设计模式ChainofResponsibility对上述过程进行设计后得到的类图如图18-9所示 [C++代码] #include<string> #include<iostream> usingnamespacestd classPurchaseRequest public doubleAmount//采购的金额 intNumber//采购单编号 stringPurpose//采购目的 classApprover//审批者类 public Approversuccessor=NULL virtualvoidProcessRequestPurchaseRequestaRequest ifsuccessor!=NULLsuccessor->1 voidSetSuccessorApprover*aSucceSSsorsuccessor=aSuccesssor private 2successor classCongresspublicApprover public voidProcessRequestPurchaseRequeStaRequest ifaRequest.Amount>=500000/*决定是否审批的代码省略*/ else3ProceSsRequestaRequest classDirectorpublicApprover publlc voidProcessRequestPurchaseRequestaRequest/*此处代码省略*/ classPresidentpublicApprover public voidProcessRequestPurchaseRequestaRequest/*此处代码省略*/ classVicePresidentpublicApprover public voidProcessRequestPurchaseRequestaRequest/*此处代码省略*/ voidmsin CongressMeetingVicePresidentSamDirectorLarryPresidentTammy //构造责任链 Meeting.SetSuccessorNULLSam.SetSuccessor4 Tammy.SetSuccessor5Larry.SetSuccessot6 PurchaseRequestaRequest//构造采购审批请求 cin>>aRequest.Amount//输入采购请求的金额 7.ProcessRequestaRequest//开始审批 return 3处填
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 已知某类库开发商提供了一套类库类库中定义了Application类和Document类它们之间的关系如图18-15所示其中Application类表示应用程序自身而Document类则表示应用程序打开的文档Application类负责打开一个已有的以外部形式存储的文档比如一个文件一旦从该文件中读出信息后它就由一个Document对象表示 当开发一个具体的应用程序时开发者需要分别创建自己的Application和Document子类例如图18-15中的类MyApplication和类MyDocument并分别实现Application类和Document类中的某些方法 已知Application类中的openDocument方法采用了模板方法TemplateMethod设计模式该方法定义了打开文档的每一个主要步骤如下所示 1检查文档是否能够被打开若不能打开则给出出错信息并返回 2创建文档对象 3通过文档对象打开文档 4通过文档对象读取文档信息 5将文档对象加入到Application的文档对象集合中 [C++代码] #include<iostream> #include<vector> usingnamespacestd C1assDocument public voidsave/*存储文档数据此处代码省略*/ voidopenstringdocName/*打开文档此处代码省略*/ voidclose/*关闭文档此处代码省略*/ virtualvoidreadStringdocName=0 classAppplication private vector<1>docs/*文档对象集合*/ public boolcanopenDocumentStringdocName /*判断是否可以打开指定文档返回真值时表示可以打开返回假时值表示不可打开此处代码省略*/ voidaddDocumentDocument*aD0cument /*将文档对象添加到文档对象集合中*/ docs.push_back2 virtualDocument*doCreateDocument=0/*创建一个文档对象*/ voidopenDocumentstringdocName/*打开文档*/ if3 cout<<"文档无法打开!"<<end1 return 4adoc=5 6 7 8 1处填
阅读下列说明和Java代码将应填入n处的字句写在对应栏内 [说明] 已知某企业的采购审批是分级进行的即根据采购金额的不同由不同层次的主管人员来审批主任可以审批5万元以下不包括5万元的采购单副董事长可以审批5万元至10万元不包括10万元的采购单董事长可以审批10万元至50万元不包括50万元的采购单50万元及以上的采购单就需要开会讨论决定 采用责任链设计模式ChainofResponsibility对上述过程进行设计后得到的类图如图18-10所示 [Java代码] classPurchaseRequest publicdoubleAmount//采购的金额 publicintNumber//采购单编号 publicStringPurpose//采购目的 classApprover//审批者类 publicApproversuccessor=null publicvoidProcessRequestPurchaseRequestaRequest ifsuccessor!=nullsuccessor.1 publicvoidSetSuccessorApproveraSuccesssorsuccessor=aSuccesssor private2successor ClassCongressextendsApprover publicvoidProcessRequestPurchaseRequestaRequest ifaRequest.Amount>=500000/*决定是否审批的代码省略*/ else3.ProcessRequestaRequest classDirectorextendsApprover publicvoidProcessRequestPurchaseRequestaRequest/*此处代码省略*/ classPresidentextendsApprover publicvoidProcessRequestpurchaseRequestaRequest/*此处代码省略*/ classVicePresidentextendsApprover publicvoidProcessRequestpurchaseRequestaRequest/*此处代码省略*/ publicclassrs publicstaticvoidmainString[]argsthrowsIOException CongressMeeting=newCongress VicePresidentSam=newVicePresident DirectorLarry=newDirector PresidentTammy=newPresident //构造责任链 Meeting.SetSuccessornullSam.SetSuccessor4 Tammy.SetSuccessor5Larry.SetSuccessor6 //构造采购审批请求 PurchaseRequestaRequest=newPurchaseRequest BufferedReaderbr=newBufferedReadernewInputStreamReaderSystem.in aRequest.Amount=Double.parseDoublebr.readLine 7.ProcessRequestaRequest//开始审批 return 6处填
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 现欲实现一个图像浏览系统要求该系统能够显示BMPJPEG和GIF三种格式的文件并且能够在Windows和Linux两种操作系统上运行系统首先将BMPJPEG和GIF三种格式的文件解析为像素矩阵然后将像素矩阵显示在屏幕上系统需具有较好的扩展性以支持新的文件格式和操作系统为满足上述需求并减少所需生成的子类数目采用桥接Bridge设计模式进行设计所得类图如图18-17所示 采用该设计模式的原因在于系统解析BMPGIF与JPEG文件的代码仅与文件格式相关而在屏幕上显示像素矩阵的代码则仅与操作系统相关 [C++代码] clasSMatrix//各种格式的文件最终都被转换为像素矩阵 //此处代码省略 classImageImp public virtualvoiddoPaintMatrixm=0//显示像素矩阵m classWinlmppublicImageImp public voiddoPaintMatrixm/*调用Windows系统的绘制函数绘制像素矩阵*/ classLinuxlmppublicImagelmp public voiddoPaintMatrixm/*调用Linux系统的绘制函数绘制像素矩阵*/ classImage public voidsetImpImagelmp*imp1=imp virtualvoidparseFiiestringfileName=0 protected 2*imp classBMPpublicImage public voidparseFilestringfileName //此处解析BMP文件并获得一个像素矩阵对象m 3//显示像素矩阵m classGIF://publicImage //此处代码省略 classJPEG://publicImage //此处代码省略 voidmain //在Windows操作系统上查看demo.bmp图像文件 Image*imagel=4 ImageImp*imageImpl=5 6 imagel->parseFile"demo.bmp" 现假设该系统需要支持10种格式的图像文件和5种操作系统不考虑类Matrix若采用桥接设计模式则至少需要设计7个类 4处填
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 现欲实现一个图像浏览系统要求该系统能够显示BMPJPEG和GIF三种格式的文件并且能够在Windows和Linux两种操作系统上运行系统首先将BMPJPEG和GIF三种格式的文件解析为像素矩阵然后将像素矩阵显示在屏幕上系统需具有较好的扩展性以支持新的文件格式和操作系统为满足上述需求并减少所需生成的子类数目采用桥接Bridge设计模式进行设计所得类图如图18-17所示 采用该设计模式的原因在于系统解析BMPGIF与JPEG文件的代码仅与文件格式相关而在屏幕上显示像素矩阵的代码则仅与操作系统相关 [C++代码] clasSMatrix//各种格式的文件最终都被转换为像素矩阵 //此处代码省略 classImageImp public virtualvoiddoPaintMatrixm=0//显示像素矩阵m classWinlmppublicImageImp public voiddoPaintMatrixm/*调用Windows系统的绘制函数绘制像素矩阵*/ classLinuxlmppublicImagelmp public voiddoPaintMatrixm/*调用Linux系统的绘制函数绘制像素矩阵*/ classImage public voidsetImpImagelmp*imp1=imp virtualvoidparseFiiestringfileName=0 protected 2*imp classBMPpublicImage public voidparseFilestringfileName //此处解析BMP文件并获得一个像素矩阵对象m 3//显示像素矩阵m classGIF://publicImage //此处代码省略 classJPEG://publicImage //此处代码省略 voidmain //在Windows操作系统上查看demo.bmp图像文件 Image*imagel=4 ImageImp*imageImpl=5 6 imagel->parseFile"demo.bmp" 现假设该系统需要支持10种格式的图像文件和5种操作系统不考虑类Matrix若采用桥接设计模式则至少需要设计7个类 5处填
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 已知某企业的采购审批是分级进行的即根据采购金额的不同由不同层次的主管人员来审批主任可以审批5万元以下不包括5万元的采购单副董事长可以审批5万元至10万元不包括10万元的采购单董事长可以审批10万元至50万元不包括50万元的采购单50万元及以上的采购单就需要开会讨论决定 采用责任链设计模式ChainofResponsibility对上述过程进行设计后得到的类图如图18-9所示 [C++代码] #include<string> #include<iostream> usingnamespacestd classPurchaseRequest public doubleAmount//采购的金额 intNumber//采购单编号 stringPurpose//采购目的 classApprover//审批者类 public Approversuccessor=NULL virtualvoidProcessRequestPurchaseRequestaRequest ifsuccessor!=NULLsuccessor->1 voidSetSuccessorApprover*aSucceSSsorsuccessor=aSuccesssor private 2successor classCongresspublicApprover public voidProcessRequestPurchaseRequeStaRequest ifaRequest.Amount>=500000/*决定是否审批的代码省略*/ else3ProceSsRequestaRequest classDirectorpublicApprover publlc voidProcessRequestPurchaseRequestaRequest/*此处代码省略*/ classPresidentpublicApprover public voidProcessRequestPurchaseRequestaRequest/*此处代码省略*/ classVicePresidentpublicApprover public voidProcessRequestPurchaseRequestaRequest/*此处代码省略*/ voidmsin CongressMeetingVicePresidentSamDirectorLarryPresidentTammy //构造责任链 Meeting.SetSuccessorNULLSam.SetSuccessor4 Tammy.SetSuccessor5Larry.SetSuccessot6 PurchaseRequestaRequest//构造采购审批请求 cin>>aRequest.Amount//输入采购请求的金额 7.ProcessRequestaRequest//开始审批 return 5处填
阅读下列说明和Java代码将应填入n处的字句写在对应栏内 [说明] 已知某企业的采购审批是分级进行的即根据采购金额的不同由不同层次的主管人员来审批主任可以审批5万元以下不包括5万元的采购单副董事长可以审批5万元至10万元不包括10万元的采购单董事长可以审批10万元至50万元不包括50万元的采购单50万元及以上的采购单就需要开会讨论决定 采用责任链设计模式ChainofResponsibility对上述过程进行设计后得到的类图如图18-10所示 [Java代码] classPurchaseRequest publicdoubleAmount//采购的金额 publicintNumber//采购单编号 publicStringPurpose//采购目的 classApprover//审批者类 publicApproversuccessor=null publicvoidProcessRequestPurchaseRequestaRequest ifsuccessor!=nullsuccessor.1 publicvoidSetSuccessorApproveraSuccesssorsuccessor=aSuccesssor private2successor ClassCongressextendsApprover publicvoidProcessRequestPurchaseRequestaRequest ifaRequest.Amount>=500000/*决定是否审批的代码省略*/ else3.ProcessRequestaRequest classDirectorextendsApprover publicvoidProcessRequestPurchaseRequestaRequest/*此处代码省略*/ classPresidentextendsApprover publicvoidProcessRequestpurchaseRequestaRequest/*此处代码省略*/ classVicePresidentextendsApprover publicvoidProcessRequestpurchaseRequestaRequest/*此处代码省略*/ publicclassrs publicstaticvoidmainString[]argsthrowsIOException CongressMeeting=newCongress VicePresidentSam=newVicePresident DirectorLarry=newDirector PresidentTammy=newPresident //构造责任链 Meeting.SetSuccessornullSam.SetSuccessor4 Tammy.SetSuccessor5Larry.SetSuccessor6 //构造采购审批请求 PurchaseRequestaRequest=newPurchaseRequest BufferedReaderbr=newBufferedReadernewInputStreamReaderSystem.in aRequest.Amount=Double.parseDoublebr.readLine 7.ProcessRequestaRequest//开始审批 return 4处填
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 已知某类库开发商提供了一套类库类库中定义了Application类和Document类它们之间的关系如图18-15所示其中Application类表示应用程序自身而Document类则表示应用程序打开的文档Application类负责打开一个已有的以外部形式存储的文档比如一个文件一旦从该文件中读出信息后它就由一个Document对象表示 当开发一个具体的应用程序时开发者需要分别创建自己的Application和Document子类例如图18-15中的类MyApplication和类MyDocument并分别实现Application类和Document类中的某些方法 已知Application类中的openDocument方法采用了模板方法TemplateMethod设计模式该方法定义了打开文档的每一个主要步骤如下所示 1检查文档是否能够被打开若不能打开则给出出错信息并返回 2创建文档对象 3通过文档对象打开文档 4通过文档对象读取文档信息 5将文档对象加入到Application的文档对象集合中 [C++代码] #include<iostream> #include<vector> usingnamespacestd C1assDocument public voidsave/*存储文档数据此处代码省略*/ voidopenstringdocName/*打开文档此处代码省略*/ voidclose/*关闭文档此处代码省略*/ virtualvoidreadStringdocName=0 classAppplication private vector<1>docs/*文档对象集合*/ public boolcanopenDocumentStringdocName /*判断是否可以打开指定文档返回真值时表示可以打开返回假时值表示不可打开此处代码省略*/ voidaddDocumentDocument*aD0cument /*将文档对象添加到文档对象集合中*/ docs.push_back2 virtualDocument*doCreateDocument=0/*创建一个文档对象*/ voidopenDocumentstringdocName/*打开文档*/ if3 cout<<"文档无法打开!"<<end1 return 4adoc=5 6 7 8 3处填
阅读下列说明和Java代码将应填入n处的字句写在对应栏内 [说明] 已知某企业的采购审批是分级进行的即根据采购金额的不同由不同层次的主管人员来审批主任可以审批5万元以下不包括5万元的采购单副董事长可以审批5万元至10万元不包括10万元的采购单董事长可以审批10万元至50万元不包括50万元的采购单50万元及以上的采购单就需要开会讨论决定 采用责任链设计模式ChainofResponsibility对上述过程进行设计后得到的类图如图18-10所示 [Java代码] classPurchaseRequest publicdoubleAmount//采购的金额 publicintNumber//采购单编号 publicStringPurpose//采购目的 classApprover//审批者类 publicApproversuccessor=null publicvoidProcessRequestPurchaseRequestaRequest ifsuccessor!=nullsuccessor.1 publicvoidSetSuccessorApproveraSuccesssorsuccessor=aSuccesssor private2successor ClassCongressextendsApprover publicvoidProcessRequestPurchaseRequestaRequest ifaRequest.Amount>=500000/*决定是否审批的代码省略*/ else3.ProcessRequestaRequest classDirectorextendsApprover publicvoidProcessRequestPurchaseRequestaRequest/*此处代码省略*/ classPresidentextendsApprover publicvoidProcessRequestpurchaseRequestaRequest/*此处代码省略*/ classVicePresidentextendsApprover publicvoidProcessRequestpurchaseRequestaRequest/*此处代码省略*/ publicclassrs publicstaticvoidmainString[]argsthrowsIOException CongressMeeting=newCongress VicePresidentSam=newVicePresident DirectorLarry=newDirector PresidentTammy=newPresident //构造责任链 Meeting.SetSuccessornullSam.SetSuccessor4 Tammy.SetSuccessor5Larry.SetSuccessor6 //构造采购审批请求 PurchaseRequestaRequest=newPurchaseRequest BufferedReaderbr=newBufferedReadernewInputStreamReaderSystem.in aRequest.Amount=Double.parseDoublebr.readLine 7.ProcessRequestaRequest//开始审批 return 2处填
阅读下列说明和Java代码将应填入n处的字句写在对应栏内 [说明] 已知某企业欲开发一个家用电器遥控系统即用户使用一个遥控器即可控制某些家用电器的开与关遥控器如图18-13所示该遥控器共有4个按钮编号分别是0~3按钮0和2能够遥控打开电器1和电器2按钮1和3则能遥控关闭电器1和电器2由于遥控系统需要支持形式多样的电器因此该系统的设计要求具有较高的扩展性现假设需要控制客厅电视和卧室电灯对该遥控系统进行设计所得类图如图18-14所示 在图18-14中类RomoteController的方法onPressButtonintbutton表示当遥控器按键按下时调用的方法参数为按键的编号Command接N中的On和off方法分别用于控制电器的开与关Light中的mrnLightintdegree方法用于调整电灯灯光的强弱参数degree值为0时表示关灯值为100时表示开灯并且将灯光亮度调整到最大TV中的setChannelintchannel方法表示设置电视播放的频道参数channel值为0时表示关闭电视值为1时表示打开电视并将频道切换为第1频道 [Java代码] classLight//电灯类 publicvoidturnLightintdegree//调整灯光亮度0表示关灯100表示亮度最大 classTV//电视机类 PublicvoidsetChannelintchannel//0表示关机1表示开机并切换到第1频道 interfaceCommand//抽象命令类 voidon voidoff classRemoteController//遥控器类 protectedCommand[]commands=newCommand[4] //遥控器有4个按钮按照编号分别对应4个Command对象 publicvoidonPressButtonintbutton //按钮被按下时执行命令对象中的命令 ifbutton%2==0commands[button].on elsecommands[button].off publicvoidsetCommandintbuttonCommandcommand 1=command//设置每个按钮对应的命令对象 classLightCommandimplementsCommand//电灯命令类 protectedLightlight//指向要控制的电灯对象 publicvoidonlight.turnLight100 publicvoidofflight.2 publicLightCommandLightlightthis.light=light classTVCommandimplementsCommand//电视机命令类 protectedTvtv//指向要控制的电视机对象 publicvoidontv.3 publicvoidofftv.setChannel0 publicTVCommandTVtvthis.tv=tv publicclassrs publicstaticvoidmainString[]args Lightlight=newLightTVtv=newTV//创建电灯和电视对象 LightCommandlightCommand=newLightCommandlight TVCommandtvCommand=newTVCommandtv RemoteControllerremoteControllet=newRemoteController //设置按钮和命令对象 remoteController.setCommand04 …//此处省略设置按钮1按钮2和按钮3的命令对象代码 本题中应用命令模式能够有效让类5和类6类7之间的耦合性降至最小 4处填
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 已知某类库开发商提供了一套类库类库中定义了Application类和Document类它们之间的关系如图18-15所示其中Application类表示应用程序自身而Document类则表示应用程序打开的文档Application类负责打开一个已有的以外部形式存储的文档比如一个文件一旦从该文件中读出信息后它就由一个Document对象表示 当开发一个具体的应用程序时开发者需要分别创建自己的Application和Document子类例如图18-15中的类MyApplication和类MyDocument并分别实现Application类和Document类中的某些方法 已知Application类中的openDocument方法采用了模板方法TemplateMethod设计模式该方法定义了打开文档的每一个主要步骤如下所示 1检查文档是否能够被打开若不能打开则给出出错信息并返回 2创建文档对象 3通过文档对象打开文档 4通过文档对象读取文档信息 5将文档对象加入到Application的文档对象集合中 [C++代码] #include<iostream> #include<vector> usingnamespacestd C1assDocument public voidsave/*存储文档数据此处代码省略*/ voidopenstringdocName/*打开文档此处代码省略*/ voidclose/*关闭文档此处代码省略*/ virtualvoidreadStringdocName=0 classAppplication private vector<1>docs/*文档对象集合*/ public boolcanopenDocumentStringdocName /*判断是否可以打开指定文档返回真值时表示可以打开返回假时值表示不可打开此处代码省略*/ voidaddDocumentDocument*aD0cument /*将文档对象添加到文档对象集合中*/ docs.push_back2 virtualDocument*doCreateDocument=0/*创建一个文档对象*/ voidopenDocumentstringdocName/*打开文档*/ if3 cout<<"文档无法打开!"<<end1 return 4adoc=5 6 7 8 7处填
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 现欲实现一个图像浏览系统要求该系统能够显示BMPJPEG和GIF三种格式的文件并且能够在Windows和Linux两种操作系统上运行系统首先将BMPJPEG和GIF三种格式的文件解析为像素矩阵然后将像素矩阵显示在屏幕上系统需具有较好的扩展性以支持新的文件格式和操作系统为满足上述需求并减少所需生成的子类数目采用桥接Bridge设计模式进行设计所得类图如图18-17所示 采用该设计模式的原因在于系统解析BMPGIF与JPEG文件的代码仅与文件格式相关而在屏幕上显示像素矩阵的代码则仅与操作系统相关 [C++代码] clasSMatrix//各种格式的文件最终都被转换为像素矩阵 //此处代码省略 classImageImp public virtualvoiddoPaintMatrixm=0//显示像素矩阵m classWinlmppublicImageImp public voiddoPaintMatrixm/*调用Windows系统的绘制函数绘制像素矩阵*/ classLinuxlmppublicImagelmp public voiddoPaintMatrixm/*调用Linux系统的绘制函数绘制像素矩阵*/ classImage public voidsetImpImagelmp*imp1=imp virtualvoidparseFiiestringfileName=0 protected 2*imp classBMPpublicImage public voidparseFilestringfileName //此处解析BMP文件并获得一个像素矩阵对象m 3//显示像素矩阵m classGIF://publicImage //此处代码省略 classJPEG://publicImage //此处代码省略 voidmain //在Windows操作系统上查看demo.bmp图像文件 Image*imagel=4 ImageImp*imageImpl=5 6 imagel->parseFile"demo.bmp" 现假设该系统需要支持10种格式的图像文件和5种操作系统不考虑类Matrix若采用桥接设计模式则至少需要设计7个类 2处填
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 已知某类库开发商提供了一套类库类库中定义了Application类和Document类它们之间的关系如图18-15所示其中Application类表示应用程序自身而Document类则表示应用程序打开的文档Application类负责打开一个已有的以外部形式存储的文档比如一个文件一旦从该文件中读出信息后它就由一个Document对象表示 当开发一个具体的应用程序时开发者需要分别创建自己的Application和Document子类例如图18-15中的类MyApplication和类MyDocument并分别实现Application类和Document类中的某些方法 已知Application类中的openDocument方法采用了模板方法TemplateMethod设计模式该方法定义了打开文档的每一个主要步骤如下所示 1检查文档是否能够被打开若不能打开则给出出错信息并返回 2创建文档对象 3通过文档对象打开文档 4通过文档对象读取文档信息 5将文档对象加入到Application的文档对象集合中 [C++代码] #include<iostream> #include<vector> usingnamespacestd C1assDocument public voidsave/*存储文档数据此处代码省略*/ voidopenstringdocName/*打开文档此处代码省略*/ voidclose/*关闭文档此处代码省略*/ virtualvoidreadStringdocName=0 classAppplication private vector<1>docs/*文档对象集合*/ public boolcanopenDocumentStringdocName /*判断是否可以打开指定文档返回真值时表示可以打开返回假时值表示不可打开此处代码省略*/ voidaddDocumentDocument*aD0cument /*将文档对象添加到文档对象集合中*/ docs.push_back2 virtualDocument*doCreateDocument=0/*创建一个文档对象*/ voidopenDocumentstringdocName/*打开文档*/ if3 cout<<"文档无法打开!"<<end1 return 4adoc=5 6 7 8 3处填
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 现欲构造一棵文件/目录树采用组合Composite设计模式来设计得到的类图如图18-19所示 [C++代码] #include<list> #include<iostream> #include<string> uslngnamesPacestd classAbStractFile protected stringname//文件或目录名称 public voidprintNamecout<<name//打印文件或目录名称 virtualcoidaddChildAbstractFile*file=0 //给一个目录增加子目录或文件 virtualvoidremoveChildAbstractFile*file=0 //删除一个目录的子目录或文件 virtuallist<AbstractFile*>*getChiidren=0 //获得一个目录的子目录或文件 classFilepublicAbstractFile public Filestringname1=name voidaddChildAbstractFile*filereturn voidremoveChildAbstractFile*filereturn 2getChiidrenreturn3 classFolderpublicAbstractFile private list<AbstractFile*>childList//存储子目录或文件 public Folderstringname4=name voidaddChiidAbstractFile*filechiidList.push_backfile voidremoveChiIdAbstractFile*filechiidList.removefile list<AbstractFile*>*getchildrenreturn5 voidmsin //构造一个树形的文件/目录结构 AbstractFile*rootFolder=newFolder"C://" AbstractFile*compositeFolder=newFolder"composite" AbstractFile*windowsFolder=newFolder"windows" AbstractFile*file=newFile"TestComposite.java" rootFolder->addChildcompositeFolder rootFolder->addChiidwindowsFolder compositeFolder->addChiidfile 3处填
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 已知某企业欲开发一个家用电器遥控系统即用户使用一个遥控器即可控制某些家用电器的开与关遥控器如图18-11所示该遥控器共有4个按钮编号分别是0~3按钮0和2能够遥控打开电器1和电器2按钮1和3则能遥控关闭电器1和电器2由于遥控系统需要支持形式多样的电器因此该系统的设计要求具有较高的扩展性现假设需要控制客厅电视和卧室电灯对该遥控系统进行设计所得类图如图18-12所示 在图18-12中类RomoteController的方法onPressButtonintbutton表示当遥控器按键按下时调用的方法参数为按键的编号Command接口中的on和off方法分别用于控制电器的开与关Light中的mrnLightintdegree方法用于调整电灯灯光的强弱参数degree值为0时表示关灯值为100时表示开灯并且将灯光亮度调整到最大TV中的setChannelintchannel方法表示设置电视播放的频道参数channel值为0时表示关闭电视值为1时表示打开电视并将频道切换为第1频道 [C++代码] classLight//电灯类 public voidturnLightintdegree//调整灯光亮度0表示关灯100表示亮度最大 classTV//电视机类 public voidsetChannelintchannel//调整频道0表示关机1表示开机并切换到第1频道 classCommand//抽象命令类 public virtualvoidon=0 virtualvoidoff=0 classRemoteController//遥控器类 protected Command*commands[4]//遥控器有4个按钮按照编号分别对应4个Command对象 public voidonPressButtonintbutton//按钮被按下时执行命令对象中的命令 ifbutton%2==0commands[button]->on elsecommands[button]->off voidsetCommandintbuttonCommand*command 1=command//设置每个按钮对应的命令对象 classLightCommandpublicCommand//电灯命令类 protectedLight*light//指向要控制的电灯对象 public voidonlight->turnLight100 voidofflight->2 LightCommandLight*lightthis->light=light classTVCommandpublicCommand//电视机命令类 protectedTV*tv//指向要控制的电视机对象 public voidontv->3 voidofftv->setChannel0 TVCommandTV*tvthis->tv=tv voidmain LightlightTvtv//创建电灯和电视对象 LightCommandlightCommand&light TVCommandtvCommand&tv RemoteControilerremoteController remoteController.setCommand04//设置按钮0的命令对象 ……//此处省略设置按钮1按钮2和按钮3的命令对象代码 本题中应用命令模式能够有效让类5和类6类7之间的耦合性降至最小 1处填
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 现欲实现一个图像浏览系统要求该系统能够显示BMPJPEG和GIF三种格式的文件并且能够在Windows和Linux两种操作系统上运行系统首先将BMPJPEG和GIF三种格式的文件解析为像素矩阵然后将像素矩阵显示在屏幕上系统需具有较好的扩展性以支持新的文件格式和操作系统为满足上述需求并减少所需生成的子类数目采用桥接Bridge设计模式进行设计所得类图如图18-17所示 采用该设计模式的原因在于系统解析BMPGIF与JPEG文件的代码仅与文件格式相关而在屏幕上显示像素矩阵的代码则仅与操作系统相关 [C++代码] clasSMatrix//各种格式的文件最终都被转换为像素矩阵 //此处代码省略 classImageImp public virtualvoiddoPaintMatrixm=0//显示像素矩阵m classWinlmppublicImageImp public voiddoPaintMatrixm/*调用Windows系统的绘制函数绘制像素矩阵*/ classLinuxlmppublicImagelmp public voiddoPaintMatrixm/*调用Linux系统的绘制函数绘制像素矩阵*/ classImage public voidsetImpImagelmp*imp1=imp virtualvoidparseFiiestringfileName=0 protected 2*imp classBMPpublicImage public voidparseFilestringfileName //此处解析BMP文件并获得一个像素矩阵对象m 3//显示像素矩阵m classGIF://publicImage //此处代码省略 classJPEG://publicImage //此处代码省略 voidmain //在Windows操作系统上查看demo.bmp图像文件 Image*imagel=4 ImageImp*imageImpl=5 6 imagel->parseFile"demo.bmp" 现假设该系统需要支持10种格式的图像文件和5种操作系统不考虑类Matrix若采用桥接设计模式则至少需要设计7个类 3处填
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 现欲实现一个图像浏览系统要求该系统能够显示BMPJPEG和GIF三种格式的文件并且能够在Windows和Linux两种操作系统上运行系统首先将BMPJPEG和GIF三种格式的文件解析为像素矩阵然后将像素矩阵显示在屏幕上系统需具有较好的扩展性以支持新的文件格式和操作系统为满足上述需求并减少所需生成的子类数目采用桥接Bridge设计模式进行设计所得类图如图18-17所示 采用该设计模式的原因在于系统解析BMPGIF与JPEG文件的代码仅与文件格式相关而在屏幕上显示像素矩阵的代码则仅与操作系统相关 [C++代码] clasSMatrix//各种格式的文件最终都被转换为像素矩阵 //此处代码省略 classImageImp public virtualvoiddoPaintMatrixm=0//显示像素矩阵m classWinlmppublicImageImp public voiddoPaintMatrixm/*调用Windows系统的绘制函数绘制像素矩阵*/ classLinuxlmppublicImagelmp public voiddoPaintMatrixm/*调用Linux系统的绘制函数绘制像素矩阵*/ classImage public voidsetImpImagelmp*imp1=imp virtualvoidparseFiiestringfileName=0 protected 2*imp classBMPpublicImage public voidparseFilestringfileName //此处解析BMP文件并获得一个像素矩阵对象m 3//显示像素矩阵m classGIF://publicImage //此处代码省略 classJPEG://publicImage //此处代码省略 voidmain //在Windows操作系统上查看demo.bmp图像文件 Image*imagel=4 ImageImp*imageImpl=5 6 imagel->parseFile"demo.bmp" 现假设该系统需要支持10种格式的图像文件和5种操作系统不考虑类Matrix若采用桥接设计模式则至少需要设计7个类 6处填
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 已知某企业欲开发一个家用电器遥控系统即用户使用一个遥控器即可控制某些家用电器的开与关遥控器如图18-11所示该遥控器共有4个按钮编号分别是0~3按钮0和2能够遥控打开电器1和电器2按钮1和3则能遥控关闭电器1和电器2由于遥控系统需要支持形式多样的电器因此该系统的设计要求具有较高的扩展性现假设需要控制客厅电视和卧室电灯对该遥控系统进行设计所得类图如图18-12所示 在图18-12中类RomoteController的方法onPressButtonintbutton表示当遥控器按键按下时调用的方法参数为按键的编号Command接口中的on和off方法分别用于控制电器的开与关Light中的mrnLightintdegree方法用于调整电灯灯光的强弱参数degree值为0时表示关灯值为100时表示开灯并且将灯光亮度调整到最大TV中的setChannelintchannel方法表示设置电视播放的频道参数channel值为0时表示关闭电视值为1时表示打开电视并将频道切换为第1频道 [C++代码] classLight//电灯类 public voidturnLightintdegree//调整灯光亮度0表示关灯100表示亮度最大 classTV//电视机类 public voidsetChannelintchannel//调整频道0表示关机1表示开机并切换到第1频道 classCommand//抽象命令类 public virtualvoidon=0 virtualvoidoff=0 classRemoteController//遥控器类 protected Command*commands[4]//遥控器有4个按钮按照编号分别对应4个Command对象 public voidonPressButtonintbutton//按钮被按下时执行命令对象中的命令 ifbutton%2==0commands[button]->on elsecommands[button]->off voidsetCommandintbuttonCommand*command 1=command//设置每个按钮对应的命令对象 classLightCommandpublicCommand//电灯命令类 protectedLight*light//指向要控制的电灯对象 public voidonlight->turnLight100 voidofflight->2 LightCommandLight*lightthis->light=light classTVCommandpublicCommand//电视机命令类 protectedTV*tv//指向要控制的电视机对象 public voidontv->3 voidofftv->setChannel0 TVCommandTV*tvthis->tv=tv voidmain LightlightTvtv//创建电灯和电视对象 LightCommandlightCommand&light TVCommandtvCommand&tv RemoteControilerremoteController remoteController.setCommand04//设置按钮0的命令对象 ……//此处省略设置按钮1按钮2和按钮3的命令对象代码 本题中应用命令模式能够有效让类5和类6类7之间的耦合性降至最小 5处填
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 已知某类库开发商提供了一套类库类库中定义了Application类和Document类它们之间的关系如图18-15所示其中Application类表示应用程序自身而Document类则表示应用程序打开的文档Application类负责打开一个已有的以外部形式存储的文档比如一个文件一旦从该文件中读出信息后它就由一个Document对象表示 当开发一个具体的应用程序时开发者需要分别创建自己的Application和Document子类例如图18-15中的类MyApplication和类MyDocument并分别实现Application类和Document类中的某些方法 已知Application类中的openDocument方法采用了模板方法TemplateMethod设计模式该方法定义了打开文档的每一个主要步骤如下所示 1检查文档是否能够被打开若不能打开则给出出错信息并返回 2创建文档对象 3通过文档对象打开文档 4通过文档对象读取文档信息 5将文档对象加入到Application的文档对象集合中 [C++代码] #include<iostream> #include<vector> usingnamespacestd C1assDocument public voidsave/*存储文档数据此处代码省略*/ voidopenstringdocName/*打开文档此处代码省略*/ voidclose/*关闭文档此处代码省略*/ virtualvoidreadStringdocName=0 classAppplication private vector<1>docs/*文档对象集合*/ public boolcanopenDocumentStringdocName /*判断是否可以打开指定文档返回真值时表示可以打开返回假时值表示不可打开此处代码省略*/ voidaddDocumentDocument*aD0cument /*将文档对象添加到文档对象集合中*/ docs.push_back2 virtualDocument*doCreateDocument=0/*创建一个文档对象*/ voidopenDocumentstringdocName/*打开文档*/ if3 cout<<"文档无法打开!"<<end1 return 4adoc=5 6 7 8 5处填
阅读下列说明和C++代码将应填入n处的字句写在对应栏内 [说明] 已知某类库开发商提供了一套类库类库中定义了Application类和Document类它们之间的关系如图18-15所示其中Application类表示应用程序自身而Document类则表示应用程序打开的文档Application类负责打开一个已有的以外部形式存储的文档比如一个文件一旦从该文件中读出信息后它就由一个Document对象表示 当开发一个具体的应用程序时开发者需要分别创建自己的Application和Document子类例如图18-15中的类MyApplication和类MyDocument并分别实现Application类和Document类中的某些方法 已知Application类中的openDocument方法采用了模板方法TemplateMethod设计模式该方法定义了打开文档的每一个主要步骤如下所示 1检查文档是否能够被打开若不能打开则给出出错信息并返回 2创建文档对象 3通过文档对象打开文档 4通过文档对象读取文档信息 5将文档对象加入到Application的文档对象集合中 [C++代码] #include<iostream> #include<vector> usingnamespacestd C1assDocument public voidsave/*存储文档数据此处代码省略*/ voidopenstringdocName/*打开文档此处代码省略*/ voidclose/*关闭文档此处代码省略*/ virtualvoidreadStringdocName=0 classAppplication private vector<1>docs/*文档对象集合*/ public boolcanopenDocumentStringdocName /*判断是否可以打开指定文档返回真值时表示可以打开返回假时值表示不可打开此处代码省略*/ voidaddDocumentDocument*aD0cument /*将文档对象添加到文档对象集合中*/ docs.push_back2 virtualDocument*doCreateDocument=0/*创建一个文档对象*/ voidopenDocumentstringdocName/*打开文档*/ if3 cout<<"文档无法打开!"<<end1 return 4adoc=5 6 7 8 1处填
热门题库
更多
中级软件设计师
初级网络管理员
初级信息处理技术员
中级数据库系统工程师
中级多媒体应用设计师
高级系统分析师
高级网络规划设计师
高级系统架构师
中级信息系统监理师
初级通信工程师
中级通信工程师
通信新技术、新业务知识
无线通信专业技术
移动通信专业技术
有线传输专业技术
电话交换专业技术