当前位置:首页计算机类软件水平考试初级程序员->阅读以下说明、图和C++代码,填补C++代码中的空缺(1)—

阅读以下说明、图和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[i]);

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"。

更新时间:2021-11-24 04:11

你可能感兴趣的试题

单选题

( )is that it provides guidance and direction on how quality will be managed and verified throughout the project.

  • A.Plan Quality Management
  • B.Manage Quality
  • C.Control Quality
  • D.Project Charter
查看答案
单选题

( )the process of determining,documenting,and managing stakeholder needs and requirements to meet Project objectives.

  • A.Plan Scope Management
  • B.Collection Requirements
  • C.Validate Scope
  • D.Control Scope
查看答案
单选题

The information security management system preserves the confidentiality,integrity and availability of information by applying a( ).

  • A.technology management process
  • B.resource management process
  • C.quality management process
  • D.risk management process
查看答案
单选题

( )is a decentralized database,ensure that the data will not be tampered with and forged.

  • A.Artificial intelligence
  • B.Blockchain
  • C.Sensing technology
  • D.Big datA
查看答案
单选题

( )puts computer resources on the web,and must meet the requirements of super capacity,super concurrency,super speed and super security.

  • A.Cloud computing
  • B.Big datA
  • C.Blockchain
  • D.Internet of things
查看答案
单选题

分配甲、乙、丙、丁四个人去完成五项任务。每人完成各项任务时间如表所示。由于任务多于人数,故规定其中有一个人可兼完成两项任务,其余三人每人完成一项。为了花费时间最少,( )应该完成两项任务。

高级信息系统项目管理师,历年真题,2021年下半年《信息系统项目管理师》真题

  • A.甲
  • B.乙
  • C.丙
  • D.丁
查看答案
单选题

已知某公司生产AB两种产品,其中生产1件A产品需要1个单位的甲资源,3个单位的丙资源;生产1件B产品需要2个单位的乙资源和2个单位的丙资源。已知现有甲乙丙三种资源4个单位、12个单位和18个单位。通过市场预测,可知A产品的单位市场利润为2元,B产品的单位市场利润为5元。该公司获得最大的市场利润应生产A产品(68)件,此时(69)资源仍有剩余。

  • A.甲
  • B.乙
  • C.丙
  • D.甲及丙
查看答案
单选题

已知某公司生产AB两种产品,其中生产1件A产品需要1个单位的甲资源,3个单位的丙资源;生产1件B产品需要2个单位的乙资源和2个单位的丙资源。已知现有甲乙丙三种资源4个单位、12个单位和18个单位。通过市场预测,可知A产品的单位市场利润为2元,B产品的单位市场利润为5元。该公司获得最大的市场利润应生产A产品(68)件,此时(69)资源仍有剩余。

  • A.0
  • B.2
  • C.4
  • D.6
查看答案
单选题

某项目2016年投资额12万元,2018年开始取得项目的净收益(产品一原料辅料及公用工程)6万元/年,2018-2021年每年还会产生其他成本(包括人员工资、管理成本、制造成本等)1.1万元/年;増值税0.35万元/年、营业税金及附加0.05万元/年。则该项目的静态投资回收期为(66)年,截止到2021年底该项目的投资收益率是(67)。

  • A.0.25
  • B.0.33
  • C.0.35
  • D.0.6
查看答案
单选题

安全审计的手段主要包括( )。

  • A.①②③
  • B.②③④
  • C.①②④
  • D.①③④
查看答案