试题详情

试题内容

试题六
阅读下列说明和C++代码,将应填入  (n)  处的字句写在对应栏内。
【说明】
已知某企业欲开发一家用电器遥控系统,即用户使用一个遥控器即可控制某些家用电器的开与关。遥控器如左下所示。该遥控器共有4个按钮,编号分别是0至3,按钮0和2能够遥控打开电器1和电器2,按钮1和3则能遥控关闭电器1和电器2。由于遥控系统需要支持形式多样的电器,因此,该系统的设计要求具有较高的扩展性。现假设需要控制客厅电视和卧室电灯,对该遥控系统进行设计所得类图如右下所示。

右上图中,类RomoteController的方法onPressButton(int button)表示当遥控器按键按下时调用的方法,参数为按键的编号;Command接口中on和off方法分别用于控制电器的开与关;Light中turnLight(int degree)方法用于调整电灯灯光的强弱,参数 degree值为0时表示关灯,值为100时表示开灯并且将灯光亮度调整到最大;TV中 setChannel(int channel)方法表示设置电视播放的频道,参数channel值为0时表示关闭电视,为1时表示开机并将频道切换为第1频道。
【C++代码】
class Light{  //电灯类
public:
void trunLight(int degree){//调整灯光亮度,0表示关灯,100表示亮度最大);
};
class TV{//电视机类
public:
vold setChannel(int channel]{//调整电视频道,0表示关机,1表示开机并切换到1频道};
};
class Command{//抽象命令类
public:
virtual void on()=0;
virtual void off()=0;
};
class RemoteController{  //遥控器类
protected:
Command* commands [4];//遥控器有4个按钮,按照编号分别对应4个Command对象
public:
void onPressButton(int button){  //按钮被按下时执行命令对象中的命令
if(button % 2==0)commands[button]->on();
else commands[button]->off();
}
void setCommand(int button,Command* command){
(1)  =command;//设置每个按钮对应的命令对象
}
};
class LightCommand:public Command{  //电灯命令类
protected:    Light* light;  //指向要控制的电灯对象
public:
void On(){light->trunLight(100););
void off()[light->  (2)  ;);
LightCommand(Light * light){this->light=light;);
};
class TVCommand:public Command{//电视机命令类
protected:    TV*tv;  //指向要控制的电视机对象
public:
void on(){tv->  (3)  ;};
void off(){tv->setChannel(0););
TVCommand(TV *tv){this->tv=tv;);
};
void main(){
Light light;    TV tv;//创建电灯和电视对象
LightCommand lightCommand (&light);
TVCommand tVCommand(&tv);
RemoteController remoteController;
remoteController. setCommand(0,  (4)  );  //设置按钮0的命令对象
…//此处省略设置按钮1、按钮2和按钮3的命令对象代码
}
本题中,应用命令模式能够有效让类  (5)  和类  (6)  、类  (7)  之间的耦合性降至最小。



查看答案

软题库参考答案:暂时没有答案(仅供参考)

软题库解析:正在加载....

你可能感兴趣的试题

3题:阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某大学拟开发一个用于管理学术出版物(Publication)的数字图书馆系统,用户可以从该系统查询或下载已发表的学术出版物。系统的主要功能如下:
1.登录系统。系统的用户(User)仅限于该大学的学生(Student),教师(Faculty)和其它工作人员(Staff)。在访问系统之前,用户必须使用其校园账号和密码登录系统。
2.查询某位作者(Author)的所有出版物。系统中保存了会议文章(ConfPaper),期刊文章(JournalArticle)和校内技术报告(TechReport)等学术出版物的信息,如题目,作者以及出版年份等。除此之外,系统还存储了不
同类型出版物的一些特有信息;
(1)对于会议文章,系统还记录了会议名称,召开时间以及召开地点;
(2)对于期刊文章,系统还记录了期刊名称,出版月份,期号以及主办单位;
(3)对于校内技术报告,系统还记录了由学校分配的唯一ID。
3.查询制定会议集(Proceedin
6题:阅读下列说明和Java代码,将应填入 (n)处的字句卸载答题纸的对应栏内.
【说明】
某实验室欲建立一个实验室环境监测系统,能够显示实验室的温度、湿度以及洁净度等环境数据。当获取到最新的环境测量数据时,显示的环境数据能够更新。
现在采用观察者(Observer)模式来开发该系统。观察者模式的类图如图6-1所示。

【Java代码】
import java.util.*;
interface Observer {
public void update(float temp, float humidity, float cleanness);
}
interface Subject {
public void registerObserver(Observer o); //注册对主题感兴趣的观察者
1题:

试题一
阅读以下说明和图,回答问题1至问题3,将解答填入对应栏内。
[说明]
某时装邮购提供商拟开发订单处理系统,用于处理客户通过电话、传真、邮件或Web站点所下订单。其主要功能如下:
(1)增加客户记录。将新客户信息添加到客户文件,并分配一个客户号以备后续使用。
(2)查询商品信息。接收客户提交的商品信息请求,从商品文件中查询商品的价格和可订购数量等商品信息,返回给客户。
(3)增加订单记录。根据客户的订购请求及该客户记录的相关信息,产生订单并添加到订单文件中。
(4)产生配货单。根据订单记录产生配货单,并将配货单发送给仓库进行备货;备好货后,发送备货就绪通知。如果现货不足,则需向供应商订货。
(5)准备发货单。从订单文件中获取订单记录,从客户文件中获取客户记录,并产生发货单。
(6)发货。当收到仓库发送的备货就绪通知后,根据发货单给客户发货;产生装运单并发送给客户。
(7)创建客户账单。根据订单文件中的订单记录和客户文件中的客户记录,产生并发送客户账单,同时更新商品文件中的商
1题:试题一(共15分)
阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。
【说明】
某学校欲开发一学生跟踪系统,以便更自动化、更全面地对学生在校情况(到课情况和健康状态等)进行管理和追踪,使家长能及时了解子女的到课情况和健康状态,并在有健康问题时及时与医护机构对接。该系统的主要功能是:
(1)采集学生状态。通过学生卡传感器,采集学生心率、体温(摄氏度)等健康指标及其所在位置等信息并记录。每张学生卡有唯一的标识(ID)与一个学生对应。
(2)健康状态告警。在学生健康状态出问题时,系统向班主任、家长和医护机构健康服务系统发出健康状态警告,由医护机构健康服务系统通知相关医生进行处理。
(3)到课检查。综合比对学生状态、课表以及所处校园场所之间的信息对学生到课情况进行判定。对旷课学生,向其家长和班主任发送旷课警告。
(4)汇总在校情况。定期汇总在校情况,并将报告发送给家长和班主任。
(5)家长注册。家长注册使用该系统,指定自己子女,存入家长信息,待审核。
(6)基础信息管理。学校管理人员对学
3题:

试题三
阅读下列说明和图,回答问题1至问题4,将解答填入对应栏内。
【说明】
已知某唱片播放器不仅可以播放唱片,而且可以连接电脑并把电脑中的歌曲刻录到唱片上(同步歌曲)。连接电脑的过程中还可自动完成充电。
关于唱片,还有以下描述信息:
1.每首歌曲的描述信息包括:歌曲的名字、谱写这首歌曲的艺术家以及演奏这首歌曲的艺术家。只有两首歌曲的这三部分信息完全相同时,才认为它们是同一首歌曲。艺术家可能是一名歌手或一支由2名或2名以上的歌手所组成的乐队。一名歌手可以不属于任何乐队,也可以属于一个或多个乐队。
2.每张唱片由多条音轨构成;一条音轨中只包含一首歌曲或为空,一首歌曲可分布在多条音轨上;同一首歌曲在一张唱片中最多只能出现一次。
3.每条音轨都有一个开始位置和持续时间。一张唱片上音轨的次序是非常重要的,因此对于任意一条音轨,播放器需要准确地知道,它的下一条音轨和上——条音轨是什么 (如果存在的话)。
根据上述描述,采用面向对象方法对其进行分析与设计,得到了如表3-1所示的类列表、如图3-1所示的初始类图以
6题:

试题六
阅读下列说明和Java代码,将应填入  (n)  处的字句写在答题纸的对应栏内。
[说明]
现欲构造一文件/目录树,采用组合(Composite)设计模式来设计,得到的类图如下图所示:

[Java代码]
import  java.util.ArrayLiSt;
import  java.util.List;
(1) class AbstractFile  {
protected  String  name;
public  void  printName24{System.out.println(name);}
public  abstract  boolean &n