首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下关于某绘图系统的技术说明、部分UML类图及C++程序,将C++程序中(1)~(6)空缺处的语句填写完整。 【说明】 某绘图系统存在Point、Line和Square这三种图元,它们具有Shape接口,图元的类图关系如图5-10所示。
阅读以下关于某绘图系统的技术说明、部分UML类图及C++程序,将C++程序中(1)~(6)空缺处的语句填写完整。 【说明】 某绘图系统存在Point、Line和Square这三种图元,它们具有Shape接口,图元的类图关系如图5-10所示。
admin
2012-12-10
28
问题
阅读以下关于某绘图系统的技术说明、部分UML类图及C++程序,将C++程序中(1)~(6)空缺处的语句填写完整。
【说明】
某绘图系统存在Point、Line和Square这三种图元,它们具有Shape接口,图元的类图关系如图5-10所示。
现要将Circle图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供XCircle类,且完全满足系统新增的Circle图元所需的功能,但XCircle不是由Shape派生而来,它提供了的接口不被系统直接使用。【C++代码5-1】既使用了XCircle又遵循了Shape规定的接口,即避免了从头开发一个新的Circle类,又可以不修改绘图系统中已经定义的接口。【C++代码5-2】根据用户指定的参数生成特定的图元实例,并对它进行显示操作。
该绘图系统定义的接口与XCircle提供的显示接口及其功能如表5-13所示。
【C++代码5-1】
class Circle: public (1) {
Private;
(2) m_circle;
Public;
void display(){
m_circle. (3)
}
};
【C++代码5-2】
class Factory{
public;
(4) getShapeInstance(int type){ //生成特定类实例
Switch(type){
case 0: return new Point;
case 1: return new Rectangle;
case 2: return new Line;
case 3: return new Circle;
default: return NULL;
}
}
};
void main(int argc, char *argv[]){
if(argc !=2){
cout<<"error parameters!"<<endl;
return;
}
int type=atoi(argv[1]);
Factory factory;
Shape *s;
s=factory.(5);
if(s==NULL){
cout<<"Error get the instance!"<<endl;
return;
}
s->display();
(6);
Return;
}
选项
答案
(1)Shape (2)XCircle (3)displayIt() (4)Shape* (5)getShapeInstance(type) (6)ddete s
解析
这是一道考查用接口实现类的功能扩充的程序分析题。本试题的解答思路如下。
由于C++具有多继承性,因此在C++实现中,通常采用多继承来代替接口。
由题干关键信息“某绘图系统存在Point、Line和Square 3种图元,它们具有Shape接口……现要将Circle图元加入此绘图系统以实现功能扩充”可知,试题明确要求Circle具有Shape接口,因此(1)空缺处应填入“Shape”。
由于【C++代码5-1】既使用了XCircle,又遵循了Shape规定的接口,即重用XCinle类而不用从头开发一个新的Circle类。因此,凡是Circle类实现Shape的接口时,都应调用相应的XCircle类提供的方法。即(2)空缺处应填入“Xcircle”,(3)空缺处应填入“displayIt()”。
通过阅读【C++代码5-2】程序,由于(5)空缺处调用factory对象的方法,而类Factory只有一个方法为getShapeInstance,因此(5)空缺处应填入“getShapeInstance(type)”。其中,参数type为用户运行程序时指定的参数,表明需要生成哪种类型的对象。
同理,由于s是Shape*类型,因此(4)空缺处所在的语句“getShapeInstance(int type)”的返回值类型为Shape*,即(4)空缺处应填入“Shape*”。
由于程序退出前需要释放指针s所占用的内存空间,因此(6)空缺处应填入“delete s”。
转载请注明原文地址:https://kaotiyun.com/show/JnjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
在Word2010中,要对设定好纸张大小的文档进行每页行数和每行字数调整,可通过页面设置对话框中的()命令进行设置。
西部某省考试机构工作人员统计了去年下半年三个地区四种资格的报考人数,将统计表抄录如下(其中有一个数据抄错了): 信息处理技术员小王很快就找出了错误的数据,并进行了纠正。错误的数据是(32),该数据应纠正为(33)。33.
在Microsoft Word中点击“文件”→“另存为”,在保存类型下拉框中不能选择的有(45)。
在Excel中,若A1单元格中的内容为“全国计算机技术与软件专业技术资格(水平)考试”,在A2单元格中输入函数=LEFT(A1,2),则A2单元格显示的内容是______。
当新插入的背景剪贴画遮挡原来的对象时,最合适的调整方法是(55)。
计算机使用了一段时间后,系统磁盘空间不足,系统启动时间变长,系统响应延迟,应用程序运行缓慢,此时,需要对系统进行优化。(28)________________不属于系统优化工作。
在Excel的A1单元格中输入函数“=IF(12,1,2)”,按回车键后,A1单元格中的值为()。
甲和乙用如下图的两个转盘做游戏,游戏规则如下:分别旋转两个转盘,当两个转盘所转到的数字之积为奇数时,甲得2分;当所转到的数字之积为偶数时,乙得1分,则这游戏规则______。
选择桌面图标时,如果要选择的多个图标比较分散,可先选择一个图标,然后按住(43)键不放,并用鼠标左键单击选择那些图标即可。
随机试题
简述公司集团的法律特征。
下列选项不属于领导艺术的是()
下列变量在给定的变化过程中是无穷小量的是().
肛门恶性黑色素瘤的特点应除外
2005年10月5日,甲、乙签订房屋买卖合同,约定年底前办理房屋过户登记。乙签发一张面额80万元的转账支票给甲以支付房款。一星期后,甲提示银行付款。2006年1月中旬,甲到银行要求支付支票金额,但此时甲尚未将房屋登记过户给乙。对此,下列哪些说法是正确的?(
根据《公路水运试验检测数据报告编制导则》(JT/T828—2019)有关检测类报告的编制要求,实验室应准确、清晰、明确、客观和科学地出具结果。()
小于1:1万海图测量时,交会法确定测图点的较差为()。
按伤亡事故的有关特征进行分类汇总,研究事故发生的有关情况的事故统计方法是()。
InwhatwaydidDr.CohenhelpexplainwhysomanyAmericansdieofdrugreactions?Inthelastparagraph,thephrase"tinkerin
Indiatoppedalistofcountriesinitshopefulnessaboutretirement,accordingtoarecentreportbyHSBCofpeople’sexpectat
最新回复
(
0
)