首页
登录
从业资格
阅读以下说明、图和C++代码,填补C++代码中的空缺(1)—(5),将解答写在答
阅读以下说明、图和C++代码,填补C++代码中的空缺(1)—(5),将解答写在答
练习题库
2022-08-02
63
问题
阅读以下说明、图和C++代码,填补C++代码中的空缺(1)—(5),将解答写在答题纸的对应栏内。 【说明】 已知某公司主要有两大类耗电资产(Asset):计算机(ComputerAsset)和建筑物(BuildingAsset)。为了节约能源,通过控制各种电源,将可关闭的房灯、计算机显示器等在夜间关闭。 为了实现上述需求,设计了如下图所示的类图,并用下面的C++代码加以实现。
【C++代码】 #include<typeinfo> #include<iostream> using namespace std; class Asset{ /*通用资产,基类*/public: virtual ~Asset( ){ }; }; class PowerSwitchable{ /*抽象基类,可在夜间关闭电源的物体接口*/public: virtual void powerDown( )=0; /*powerDown( )函数接口*/ virtual void powerUP( )=0; /*powerUp函数接口*/ }; class computerAsset: public Asset{ /*计算机资产*/ protected: int deskNumber; public: ComputerAsset(int desNumber){ this->deskNumber= deskNumber;}; class ComputerCPU (1) { /*计算机主机,永不关闭*/ public: ComputerCPU(int desNumber): ComputerAsset (deskNumber){ } }; class ComputerMonitor (2){ /*计算机显示器*/ public: ComputerMonitor(int roomNumber):ComputerAsset(roomNumber), PowerSwitchable( ){ } ~ComputerMonitor ( ){ } void powerDown( ) { /*关电源,代码略*/ } void powerUp( ) { /*开电源,代码略*/ } }; /*BuildingAsset、BuildingLight、EmergencyLight和RoomLights代码省*/ class BuldingManagement { private: Asset* things[24]; int numItems; public: void goodNight( ){ /*值班员定时“关闭”时调用,关闭可关闭的电源*/ for(int i=0;i<numItems;i++){ (3) ps=dynamic_cast<PowerSwitchable*>(things
); if(ps!=0) ps->powerDown(); } } /*goodMorning( )与goodNight( )类似,依次调用powerUp( ),实现省*/ void add(Asset*thing){ /*为建筑添加资产*/ things[(4)]=thing; } }; int main(){ BuildingManagement* b1=(5) BuildingManagement( ); b1->add(new RoomLights(101)); //101房间的控制灯 b1->add(new EmergencyLight(101)); //101房间的应急灯 b1->add(new ComputerCPU(10104)); //101房间4号桌上的计算机 b1->add(new ComputerMonitor(10104)); //101房间4号桌上的计算机显示器 b1->goodNight( ); delete b1; }
选项
答案
解析
(1):public ComputerAsset
(2):public ComputerAsset, public PowerSwitchable
(3)PowerSwitchable*
(4)numItems++
(5)new
本题考查面向对象程序设计及其 C++语言实现的能力,涉及类和抽象类、对象、函 数和虚函数的定义和相关操作以及继承关系。要求考生根据给出的案例、类图和执行过程说明,认真阅读理清程序思路,然后完成题目。
先考查针对案例的特定需求,构建类图整体结构。本题中根据类图定义了以下类:BuildingManagement、Asset、ComputerAsset 、BuildingAsset 、ComputerCPU 、ComputerMoniter 、BuildingLight、RoomLights、EmergencyLight 和 PowerSwitchable。其中,Asset为抽象类,表示通用资产,作为所有资产类的基类;ComputerAsset 表示计算 机有关资产、BuildingAsset表示建筑物有关资产,两者作为 Asset的子类,继承了Asset类;ComputerCPU、ComputerMoniter 分别表示计算机 CPU 和显示器,继承了ComputerAsset。BuildingLight 是一种建筑物资产,表示建筑物内的照明设备,继承了BuildingAsset ,而照明设备有RoomLights 和 EmergencyLight,作为BuildingLight的子类。由于案例中两大类耗电资产(Asset);计算机(ComputerAsset)和建筑物(Building Asset), 可在夜间关闭的房灯(RoomLights)、计算机显示器(ComputerMoniter)属于不同的资产类型,所以将可关闭的资产设计为抽象基类PowerSwitchable,规定可在夜间关闭电源的物体的开关电源接口,即包含两个纯虚拟(virtual)函数。因此,RoomLights 和 ComputerMoniter 继承了 PowerSwitchable。
C++ 中有不同种类的继承方式,本题目中,ComputerCPU 是ComputerAsset 的子类,并且在子类的构造函数中,调用父类的构造函数,所以继承的权限为public。其语法为:public 后加父类名。ComputerMonitor 是 ComputerAsset 的子类,而且均是可关闭的,具有开关电源的相同接口,均继承了 PowerSwitchable ,并且在子类的构造函数中,调用父类的构造函数,所以继承的权限均为 public ,多个父类的继承语法是:public 父类名1,public 父类名 2。
系统中有各类资产,在BuildingManagement 中使用 Asset 通用资产类型数组,用 add 函数依次为建筑添加资产。由于add函数中对数组添加元素只有一条语句,需要在下标中完成指明当前添加资产元素的下标,并将下标后移。在 goodNight 函数中对可关闭的资产进行控制,需要判定其是否可关闭,也就是资产是否为 PowerSwitchable 类的子类。通过动态类型转换进行判定,如果资产类型是PowerSwitchable的子类,则转换后的类型调用相应接口,并绑定到具体对象,执行对象的关闭电源行为。
类 BuildingManagement 中没有定义构造函数,编译器会生成一个缺省的构造函数,采用 new关键宇进行对象创建。使用完成之后,通过 delete 进行释放。
因此空(1)需要表现出公有继承:public ComputerAsset;空 (2)处添加继承两个父类,并且权限均为 public,即:public ComputerAsset ,public PowerSwitchable;空(3)处动态类型转换为抽象类,即 PowerSwitchable* ;空(4)处完成指明当前添加资产元素的下标,并将下标后移,即 numItems++;空(5)处补充通过使用编译器生成的缺省构造函数创建对象,即应填入"new"。
转载请注明原文地址:https://tihaiku.com/congyezige/2427575.html
本试题收录于:
初级程序员题库软件水平考试初中高级分类
初级程序员
软件水平考试初中高级
相关试题推荐
关于创建屋顶所在视图,说法正确的是()。A.迹线屋顶可以在立面视图和剖面视图中创
建筑施工图包括建筑总平面图、建筑平面图、建筑立面图、建筑剖面图和()。A.建筑效
根据《建筑工程设计信息模型分类和编码标准》,分类对象编码由表编码、大类代码、中类
一个物体的视图和剖面图各占一半的图形,称为半剖面图。一半表示物体外形的视图,另一
关于创建屋顶所在视图说法正确的是()。A.迹线屋顶可以在立面视图和剖面视图中创建
解答服务对象的健康问题,帮助其澄清观念、做出决策的人际传播形式称为A.咨询B.个
IE浏览器能够正确解析()代码。A.ASP B.HTML C.JSP D
负责解释执行JavaScript代码的是()。A.Web服务器 B.Web浏览
通过内部发起连接与外部主机建立联系,由外部主机控制并盗取用户信息的恶意代码为(
在网页中创建Email链接,代码正确的是()。A.<ahref=“call
随机试题
A.limitedB.idealC.motivatedD.sourcesE.distributedF.assignedG
WhatisthemainstrategythatMcDonald’shasadoptedtoincreaseitssalesand
[originaltext]WhenUSspacewomanJoanHigginbothamisnotflyingandworking
患者女,29岁。因肛瘘行瘘管切除术。术后护士指导其进行肛门坐浴,错误的是A.用1
冷凝集综合征患者的抗体类型为A.IgMB.IgGC.IgAD.结合补体E.补体
据对全国规模以上文化及相关产业5.9万家企业调查,2020年上半年,上述企业实现
()是借款人为取得货币资金的使用权而支付给银行的价格。A:固定利率 B:贷款利
A.环孢素 B.甲泼尼龙 C.硫唑嘌呤 D.环磷酰胺 E.左旋咪唑用于器
背景资料 某施工单位承建了一段山区高速公路,其中有一座21x40m先简支后连续
建设工程项目资金供应条件包括的内容有()。A.资金总供应量 B.资金来源 C
最新回复
(
0
)