首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C++代码,将应填入(n)处的字句写上。 [说明] 现有一个显示系统,要显示的图形有线Line、矩形Square,抽象出一个Shape类(接口),有方法显不display()。 需要新增图形Circle,又已知有类XX
阅读以下说明和C++代码,将应填入(n)处的字句写上。 [说明] 现有一个显示系统,要显示的图形有线Line、矩形Square,抽象出一个Shape类(接口),有方法显不display()。 需要新增图形Circle,又已知有类XX
admin
2010-12-17
29
问题
阅读以下说明和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://jikaoti.com/ti/d9i7FFFM
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
测试过程中,正确的测试顺序应该是()。①单元测试②集成测试③系统测试
给定包含n个正整数的数组A和正整数x,要判断数组A中是否存在两个元素之和等于x。先用插入排序算法对数组A进行排序,再用以下过程P来判断是否存在两个元素之和等于x。low=l;high=n;while(high>low)ifA[low]+A[hig
给定包含n个正整数的数组A和正整数x,要判断数组A中是否存在两个元素之和等于x。先用插入排序算法对数组A进行排序,再用以下过程P来判断是否存在两个元素之和等于x。low=l;high=n;while(high>low)ifA[low]+A[hig
某软件项目的活动图如下图所示,其中顶点表示项目里程碑,连接顶点的边表示包含的活动,边上的数字表示活动的持续时间(天)。活动EH最多可以晚开始①天而不影响项目的进度。由于某种原因,现在需要同一个工作人员完成BC和BD,则完成该项目的最少时间为②天
行为型设计模式描述类或对象如何交互和如何分配职责。______模式是行为型设计模式。
编译和解释是实现高级程序设计语言的两种方式,其区别主要在于______。
下图所示的二叉树进行顺序存储(根结点编号为1,对于编号为i的结点,其左孩子结点为2i,右孩子结点为2i+1)并用一维数组BT来表示,已知结点X、E和D在数组BT中的下标为分别为1、2、3,可推出结点G、K和H在数组BT中的下标分别为____________
软件开发中经常利用配置库实现变更控制,主要是控制软件配置项的状态变化,不受配置管理控制的是()。
某软件公司在招聘软件评测师时,应聘者甲向公司做如下保证:①经过自己测试的软件今后不会再出现问题;②在工作中对所有程序员一视同仁,不会因为在某个程序员编写的程序中发现的问题多,就重点审查该程序,以免不利于团结;③承诺不需要其他人员,自己就可以独立进行测
在一个完整的功能测试过程中,______不属于应该编写的测试文档。A.测试需求文档B.测试用例文档C.测试标准D.问题报告单
随机试题
颜元的培养目标:培养()才()德之士,显然已冲破了()学教育的桎梏。具有鲜明的经世致()特征。
TheThinkingHabitThatChangedMyLifeIrememberoneeveningthreeyearsago,whenmylifewasverydifferent.Iwasoverw
缺铁性贫血可见
患者男性,58岁,大量饮酒20余年。3d前出现呕血,并排柏油样便,昨日出现意识恍惚。查体:血压80/50mmHg,巩膜黄染,言语不清,定向力丧失,计算能力下降,扑翼样震颤(+),肌张力增高,脑电图异常。血常规:血红蛋白60g/L,血气分析pH7.48,血
10个月患儿,面黄来诊。诊断为营养性巨幼红细胞贫血,下列处理正确的是
甲企业因买卖业务向乙企业签发一张以乙为收款人的汇票,由丙作为保证人在汇票上签名,汇票的金额为100万元。乙在汇票到期日以前背书转让给丁,丁再将汇票质押给戊,并因其债务不能偿还而由戊取得票据权利,戊在汇票到期时要求付款银行付款时以背书不具连续性为由而拒绝付款
企业应建立与本单位安全生产特点相适应的专兼职应急救援队伍,或指定志兼职应急救援人员,并组织训练;无需建立应急救援队伍的,可与附近具备专业资质的()签订服务协议。
A注册会计师审计甲公司2014年财务报告,在针对存货实施细节测试时,A注册会计师决定采用传统变量抽样方法实施审计抽样。甲公司2014年12月31日存货账面余额合计15000万元,A注册会计师确定总体规模3000,样本规模200,样本账面余额合计120
新入职的你对工作百倍投入,尽心尽责。但基层民调结果显示群众对你的认可度很低,上级也接到群众对你工作能力和水平质疑的反映。请问你会如何改变这种局面?
某省2016年上半年省内居民网络消费达1696.07亿元,同比增长45.13%。该省11个地市中,2016年上半年省内居民网络消费额两两之差小于10亿元的组合共有:
最新回复
(
0
)