首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和C++代码,填写程序中的空(1)~(6),将解答写入答题纸的对应栏内。 【说明】 以下C++代码实现一个简单绘图工具,绘制不同形状以及不同颜色的图形。部分类及其关系如图6—1所示。 【C++代码】 #include
阅读下列说明和C++代码,填写程序中的空(1)~(6),将解答写入答题纸的对应栏内。 【说明】 以下C++代码实现一个简单绘图工具,绘制不同形状以及不同颜色的图形。部分类及其关系如图6—1所示。 【C++代码】 #include
admin
2020-04-30
46
问题
阅读下列说明和C++代码,填写程序中的空(1)~(6),将解答写入答题纸的对应栏内。
【说明】
以下C++代码实现一个简单绘图工具,绘制不同形状以及不同颜色的图形。部分类及其关系如图6—1所示。
【C++代码】
#include
#include
using namespace std;
class DrawCircle{ //绘制圆形,抽象类
public:
(1) //定义参数为int radius,int x,int y
virtual ~DrawCircle() {}
};
class RedCircle:public DrawCircle{ //绘制红色圆形
public:
void drawCircle(int radius,int x,int y){
tout<<"Drawing Circle[red,radius:" <
cout<< ",x: " <
}
};
class GreenCircle:public DrawCircle{//绘制绿色圆形
publiC:
void drawCircle(int radius,int x,int y){
cout<<"Drawing Circle[green,radius:" <
cout<< ", x: " << x << ", y: " << y << "]" <
}
};
class Shape{ //形状,抽象类
protected:
(2) ;
public:
Shape(DrawCircle *drawCircle){
this一>drawCircle=drawCircle;
}
virtual ~Shape() {}
public:
virtual VOid draw()=0;
};
class Circle:public Shape{ //圆形
private:
int x,y,radius;
public:
Circle(int x,int y,int radius,DrawCircle *drawCircle) (3) {
thiS一>x=x;
this一>y=y;
thiS一>radius=radius;
}
public:
void draw() {
drawCircle一> (4) ;
}
};
int main()
{
Shape *redCircle=new Circle(100,100,10, (5) );//绘制红色圆形
Shape *greencircle=new Circle(100,100,10, (6) );//绘制绿色圆形
redCircle一>draw();
greenCircle一>draw();
return 0;
}
选项
答案
(1)virtual void drawCircle(int radius,int x,int y)=0 (2)DrawCircle *drawCircle (3):Shape(drawCircle) (4)drawCircle(radius,x,y) (5)new RedCircle() (6)new GreenCircle()
解析
本题考查C++语言程序设计的能力,涉及接口、类、对象、函数的定义和使用。要求考生根据给出的案例和代码说明,认真阅读理清程序思路,然后完成题目。题目所给代码清晰,易于理清思路。
先考查题目说明,实现一个简单绘图工具,绘制不同形状以及不同颜色的图形示意(采用打印相应信息的方式实现)。根据题目说明进行设计,给出图6—1的类图,定义相关的接口、类及其之间的关系。其中Shape定义抽象类形状的接口(抽象方法)draw(),维护一个指向DrawCircle对象的引用drawCircle;Circle作为Shape的实现类,扩展了抽象类Shape,并具体实现draw()方法。DrawCircle定义实现绘制Circle的接口drawCircle(),RedCircle和GreenCircle实现DrawCircle接口并定义绘制不同颜色Circle的具体drawCircle()方法的实现。
绘制圆形(DrawCircle)定义为接口,在C++中的抽象类,函数定义为纯虚函数,通过用virtual关键字修饰方法声明,并在声明中使用”=0”来指定,只有函数的声明,没有具体函数实现,直接用分号(;)结束,即:
publiC:
virtual void drawCircle(int radius,int x,int y)=0;
抽象类无法直接创建对象,需要由具体实现类RedCircle和GreenCircle实现DrawCircle中的声明的纯虚函数后,才能创建对象。在C++中,采用:加父类名,即:
class RedCircle:publiC DrawCircle{…}
class GreenCircle:public DrawCircle{…}
其中定义了drawCircle()方法的具体实现,具体绘制红色圆形和绿色圆形:
publiC:
void drawCircle(int radius,int x,int y){…}
此方法的名称、返回类型、参数和访问控制与所实现接口中的相同。
Shape定义为抽象类,其中定义一个向DrawCircle类型对象的引用drawCircle:
protected:
DrawCircle *drawCircle;
在Shape类中定义一个带参数的构造器,构造器参数DrawCircle*drawCircle与对象的属性同名,用this关键字加以区分。其中this关键字用来引用当前对象或类实例,可以用—>取属性或行为,即:
this一>drawCircle=drawCircle;
其中,this—>drawCircle表示当前对象的drawCircle属性,赋值符号右侧drawCircle表示参数。
抽象方法public:virtual void draw()=0;定义绘制图形的方法标识,具体绘制哪个图形由Shape的子类Circle实现。即Circle继承Shape,并在构造器中指定绘制圆形的参数——圆心、半径和DrawCircle实现,实现具体draw()方法,即:
class Circle:public Shape{
publiC:
Circle(int x, int y, int radius,DrawCircle *drawCircle) :
Shape(drawCircle){…}
public:
void draw() {…}
}
其中,因为Shape中只定义了一个带参数的构造器,所以Circle的构造器中需显式调用父类Shape的构造器,并且只能出现子类参数表之后,即:Shape(drawCircle);Circle中实现父类的抽象方法draw(),具体调用drawCircle引用对象的drawCircle():方法:
public:void draw() {
drawCircle一>drawCircle(radius,x,y);
}
C++中采用指针引用机制实现引用对象的绑定和方法调用。
绘制图形工具的主程序中,可以根据需求定制所需绘制的图形。本题中在的main()函数中,定义绘制红色圆形和绘制绿色圆形,创建具体绘制相应颜色圆形的对象并传递引用,并自动向上转型赋给Shape类型的引用,然后调用draw()方法,动态绑定相应Circle对象的draw()版本进行具体绘制。即:
int main() {
Shape★redCircle=new Circle(100,100,10,new RedCircle());//绘制红色圆形
Shape*greenCircle =new Circle(100,100,10,new GreenCircle());//绘制绿色圆形
redCircle一>draw();
greenCircle一>draw();
return ();
综上所述,空(1)需要是实现接口中方法声明与实现类相同,即填入“virtual voiddrawCircle(int radius,int x,int y)=O”;空(2)要表示维护一个指向DrawCircle的指针drawCircle,即填入“DrawCircle*drawCircle”;空(3)处需要调用父类的构造器,即填入“:Shape(drawCircle)”;空(4)为drawCircle调用其drawCircle方法绘制对应圆形,即填入“drawCircle(radius,x,y)”;空(5)处为创建绘制红色圆形对象,即填入“newRedCircle()”;空(6)处为绘制绿色圆形,即填入“new GreenCircle()”。
转载请注明原文地址:https://jikaoti.com/ti/68W7FFFM
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
在Excel2007中,利用填充柄可以将数据复制到相邻单元格中。若选择含有数值的上下相邻的两个单元格,按住鼠标左键向下拖动填充柄,则数据将以(49)________________填充。
计算机使用了一段时间后,系统磁盘空间不足,系统启动时间变长,系统响应延迟,应用程序运行缓慢,此时,需要对系统进行优化。(28)________________不属于系统优化工作。
某企业的大数据工程项目包括如下四个阶段的工作:①数据获取,②数据清洗与整理,③数据分析,④数据展现。一般来说,工作量较大、花费时间较长的阶段是______(1),技术含量最高的阶段是______(2),准备向有关部门递交成果的阶段是______(3)。
对新买的计算机需要记录保存的硬件主要参数中,不包括_______。
Windows XP的许多应用程序的“文件”菜单中,都有“保存”和“另存为”两个命令。以下对这两个命令的叙述,正确的是(36)。
对同一事物进行多次测量所得的结果可能不一致,这是幽测量误差所致。利用______可使误差基本抵消。
计算机在接通电源后,系统首先由(41)程序对内部每个设备进行测试。
2008年9月27日,地面指挥中心通过“天地语音系统”和航天员进行了通话。“天地语音系统”的地面设备包括通信设备、数据传输设备、分组交换设备和地面卫星通信站等,飞船上则配备了无线通信、视频传输与数据记录等设备,使得航天员与地面指挥中心随时可以进行信息交流。
程序员一般用(7)软件编写和修改程序。
阅读以下说明,回答问题1至问题4。说明某公司A楼高40层,每层高3.3米,同一楼层内任意两个房间最远传输距离不超过90米,A楼和B楼之间距离为500米,需在整个大楼进行综合布线,结构如图1-1所示。为满足公司业务发展的需要,要求为楼内客户机提供数
随机试题
(2021年德州齐河)属于我国行政系统的外部监督体系的有()
土地增值税实行四级超率累进税率。增值额超过扣除项目金额50%但未超过扣除项目金额100%的部分,税率为()
下述哪项不属于霍奇金淋巴瘤的症状
A.外斐反应B.肥达反应C.Coombs试验D.冷凝集试验E.凝集溶解试验用于由肺炎支原体引起的原发性非典型性肺炎的辅助诊断方法是
(常用抗高血压药物的分类)A.直接血管扩张剂B.保钾利尿剂C.非二氢吡啶类钙通道阻滞剂D.二氢吡啶类钙通道阻滞剂E.血管紧张素转换酶抑制剂非洛地平属于
方形补偿器两侧的第一个支架应安装()。
资料(一)俊宏益德集团(以下简称俊宏集团)属于建筑防水材料行业,是一家集研发、生产、销售、技术咨询和施工服务为一体的专业化建筑防水系统集团。该企业防水卷材和防水涂料产能分别为1500万平方米/年和1.5万吨/年,在2005~2007年连续三年位列
情感可分为()。
好几次听见电台主持人问节目参与者“你叫什么”,我很反感。如果对方是一个小孩,回答说“我叫毛毛”,或者“我是珍珍”,那倒也显得有些亲切。但对方是一位有名有姓的成年人,这种问法就显得太粗鲁。我国的语汇是很丰富的,传统的“请问尊姓大名?”“台甫是?”或白话一些,
HackersAttackUSStateDepartmentComputersTheU.S.StateDepartmenthascloseditspublicemailsystemandwebsitesafter
最新回复
(
0
)