首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C++代码,将应填入(n)处的字句写上。 [说明] 现有一个显示系统,要显示的图形有线Line、矩形Square,抽象出一个Shape类(接口),有方法显不display()。 需要新增图形Circle,又已知有类XX
阅读以下说明和C++代码,将应填入(n)处的字句写上。 [说明] 现有一个显示系统,要显示的图形有线Line、矩形Square,抽象出一个Shape类(接口),有方法显不display()。 需要新增图形Circle,又已知有类XX
admin
2010-12-17
52
问题
阅读以下说明和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://www.kaotiyun.com/show/kvDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
传统编译器进行词法分析、语法分析、代码生成等步骤的处理时,前一阶段处理的输出是后一阶段处理的输入,则采用的软件体系结构风格是①。该体系结构的优点不包括②。②处应填入?
按照开发阶段划分,软件测试可以分为______。①单元测试②集成测试③系统测试④确认测试⑤用户测试⑥验收测试⑦第三方测试
某系统中有一个中央数据存储,模块A负责接收新来的数据并修改中央数据存储中的数据,模块B负责访问中央数据存储中的数据,则这两个模块之间的耦合类型为________________。若将这两个模块及中央数据合并成一个模块,则该模块的内聚类型为_________
软件测试使用各种术语描述软件出现的问题,以下叙述正确的是______。A.软件错误(error)是指在软件生命周期内的不希望或不可接受的人为错误,其结果是导致软件故障的产生B.软件缺陷(defect)是存在于软件(文档、数据、程序)之中的那些不希望或不
以下关于设计功能测试用例的叙述,______是不正确的。A.尽量用80%测试用例覆盖20%的核心业务模块B.功能测试用例中不包括功能的依从性测试用例C.功能测试用例中包括业务流,也包括测试数据D.功能测试用例的设计应注意缺陷群集现象
计算机采用分级存储体系的主要目的是为了解决()的问题。
某汽车维修公司有部门、员工和顾客等实体,各实体对应的关系模式如下:部门(部门代码,部门名称,电话)员工(员工代码,姓名,部门代码)顾客(顾客号,姓名,年龄,性别)维修(顾客号,故障情况,维修日期,员工代码)假设每个部门允许有多部电话,则电话属性为
下面为C语言程序,边界值问题可以定位在(45)。 int data(3), int i, for(i=1, i<=3, i++)data(i)=100
以下关于数据流图的叙述中,不正确的是______。
随机试题
社会和谐发展,需要一定的规矩、一定的规则、()
申请专利的发明在申请日以前6个月内以下列方式被公开,会导致丧失新颖性的是()
患者,男性,21岁,饱餐后打球,突然全腹持续性疼痛,阵发性加剧,向腰背部放射,呕吐,应考虑为
FIDIC合同条件中约定,因承包商的责任延误竣工时,损害赔偿金为每天1万元,该合同工程的总金额为300万元,而承包商该竣工工程的合同价为15万元,延期竣工天数为30天,合同中还约定最高赔偿限额为20万元,则在工程结算时可折减的误期损害赔偿金为( )万元。
按成孔方法不同,混凝土灌注桩分为()。
注浆施工计划阶段的工作内容包括()。
20世纪90年代以来,影响世界经济稳定发展最重要的因素是()。
下列合同中,属于印花税征税对象的有()。
20世纪60年代,商业银行的风险管理进入()。
下列叙述中,正确的是______。
最新回复
(
0
)