首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C++代码,将应填入(n)处的字句写上。 [说明] 现有一个显示系统,要显示的图形有线Line、矩形Square,抽象出一个Shape类(接口),有方法显不display()。 需要新增图形Circle,又已知有类XX
阅读以下说明和C++代码,将应填入(n)处的字句写上。 [说明] 现有一个显示系统,要显示的图形有线Line、矩形Square,抽象出一个Shape类(接口),有方法显不display()。 需要新增图形Circle,又已知有类XX
admin
2010-12-17
48
问题
阅读以下说明和C++代码,将应填入(n)处的字句写上。
[说明]
现有一个显示系统,要显示的图形有线Line、矩形Square,抽象出一个Shape类(接口),有方法显不display()。
需要新增图形Circle,又已知有类XXCircle实现了所需要实现的功能:显示displayIt()。为了继承自shape以提供统一接口,又不希望从头开发代码,希望使用XXCircle。这样将XXcircle作为Circle的一个属性,即Circle的对象包含一个XXCircle对象。当一个Circle对象被实例化时,它必须实例化一个相应的XXCircle对象: Circle对象收到的做任何事的请求都将转发给这个XXCircle对象。通过这种称为Adapter模式,Circle对象就可以通过“让XXCircle做实际工作”来表现自己的行为了。图6-1显示了各个类间的关系。以下是C++语言实现,能够正确编译通过。
[图6-1]
[C++代码]
class Shape{
public:
(1) void display()=0;
};
class Line:public Shape{//省略具体实现
};
class Square:public Shape{//省略具体实现
};
class XXCircle{
public:
void displayIt(){
//省略具体实现
}
//省略其余方法和属性
};
class Circle:public Shape{
private:
XXCircle *pxc;
public:
Circle();
void display();
};
Circle::Circle(){
pxc=(2);
}
void Circle::display()
{
pxc->(3);
}
class Factory{
public:
(4) getshapeInstance(int type){//生成特定类实例
switch(type){
case 1:return new Square;
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=factory. (5);
if(s==NULL){
cout<<"Error get the instance!"<<endl;
return;
}
s->display();
delete s;
return;
}
(5)
选项
答案
getShapeInstance(type)
解析
由“=0”可轻易判知display()函数是一个纯虚函数,因此空(1)应填virtual。
由题设,Circle实例化时,须先实例化一个XXCircle对象,而pxc正好也是XXCircle对象指针,故空(2)应填new XXCircle。
Circle在此充当适配器的角色,它所做的就是将消息转发给XXCircle实例,display()是“显示”消息,故调用XXCircle的相应方法,故空(3)应填displayIt()。
方法getShapelnstance(int type)的返回值有new Line、new Square以及new Circle,参照类的层次结构,可得空(4)应填Shape*。注意是指针。
Factory类仅定义了一个方法getShapeInstance,而此处语义正是取得一个形状进行显示,故空(5)应填getShapeInstance(type)。
转载请注明原文地址:https://kaotiyun.com/show/kvDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
测试过程中,正确的测试顺序应该是()。①单元测试②集成测试③系统测试
模块A将其中的学生信息,即学生姓名、学号、手机号等放到一个结构体中,传递给模块B,则模块A和B之间的耦合类型为______耦合。
在单入口单出口的do…while循环结构中,______。
编译和解释是实现高级程序设计语言的两种方式,其区别主要在于______。
以下关于防火墙功能特性的说法中,错误的是______。
调用函数时若是引用调用方式,则是将________________。下面所定义的函数f1为值调用方式,函数f2为引用调用方式。若有表达式x=f1(5),则函数调用执行完成后,该表达式中x获得的值为________________。
Bug记录信息包括________________。①被测软件名称②被测软件版本③测试人④错误等级⑤开发人⑥详细步骤
(3)是指按内容访问的存储器。
对于逻辑表达式((a||b)||(c&&d)),需要()个测试用例才能完成条件组合覆盖。
随机试题
简述公司资本的概念和特征。
鼻板出现的部位是
与血清人绒毛膜促性腺激素(HCG)交叉反应率最高的激素是
A.最小有效量B.最大效应C.效价强度D.半数致死量E.治疗指数能引起等效反应的相对浓度或剂量
与热力管网闭式系统相比较,开式系统其热媒是被()消耗的。
开放式基金应当保持不高于基金资产净值5%的现金或者到期日在1年以内的政府债券。()
下列状态中,客户仍然可以撤销委托指令的有()。Ⅰ.在采用证券经纪商场内交易员进行申报的情况下,经纪商收到委托指令但尚未通知交易员Ⅱ.在直接申报情况下,客户将委托输入交易系统等待成交Ⅲ.委托指令输入交易系统,证券营业部申报竞价成交
采用现金股利形式的企业必须具备的条件不包括()。
流体智力
某县为回族自治县,根据我国《宪法》的规定,该县县长人选应当符合下列哪一规定?()
最新回复
(
0
)