試題五(共15分)
閱讀以下說(shuō)明、圖和C++代碼,填補(bǔ)C++代碼中的空缺(1)—(5),將解答寫在答題紙的對(duì)應(yīng)欄內(nèi)。 
【說(shuō)明】 
已知某公司主要有兩大類耗電資產(chǎn)(Asset):計(jì)算機(jī)(ComputerAsset)和建筑物(BuildingAsset)。為了節(jié)約能源,通過(guò)控制各種電源,將可關(guān)閉的房燈、計(jì)算機(jī)顯示器等在夜間關(guān)閉。 
為了實(shí)現(xiàn)上述需求,設(shè)計(jì)了如下圖所示的類圖,并用下面的C++代碼加以實(shí)現(xiàn)。
 
【C++代碼】 
#include
#include
using  namespace  std; 
class Asset{             /*通用資產(chǎn),基類*/
public: virtual ~Asset( ){ }; 
}; 
class PowerSwitchable{                  /*抽象基類,可在夜間關(guān)閉電源的物體接口*/
public: virtual void powerDown( )=0;      /*powerDown( )函數(shù)接口*/
virtual void powerUP( )=0;        /*powerUp函數(shù)接口*/ 
}; 
class computerAsset: public Asset{      /*計(jì)算機(jī)資產(chǎn)*/ 
protected: int deskNumber; 
public:
ComputerAsset(int desNumber){   this->deskNumber= deskNumber;
}; 
class ComputerCPU  (1)  {     /*計(jì)算機(jī)主機(jī),永不關(guān)閉*/ 
public: 
ComputerCPU(int desNumber): ComputerAsset (deskNumber){ } 
}; 
class ComputerMonitor (2){    /*計(jì)算機(jī)顯示器*/ 
public: 
ComputerMonitor(int roomNumber):ComputerAsset(roomNumber),
PowerSwitchable( ){ }
~ComputerMonitor ( ){ } 
void powerDown( ) {        /*關(guān)電源,代碼略*/         } 
void powerUp( ) {             /*開(kāi)電源,代碼略*/        } 
}; 
/*BuildingAsset、BuildingLight、EmergencyLight和RoomLights代碼省*/ 
class BuldingManagement  { 
private: 
Asset* things[24];   int numItems; 
public: 
void goodNight( ){           /*值班員定時(shí)“關(guān)閉”時(shí)調(diào)用,關(guān)閉可關(guān)閉的電源*/ 
for(int i=0;i
if(ps!=0) 
ps->powerDown(); 
} 
} 
/*goodMorning( )與goodNight( )類似,依次調(diào)用powerUp( ),實(shí)現(xiàn)省*/ 
void add(Asset*thing){                /*為建筑添加資產(chǎn)*/ 
things[(4)]=thing; 
} 
}; 
int main(){ 
BuildingManagement* b1=(5) BuildingManagement( ); 
b1->add(new RoomLights(101));            //101房間的控制燈 
b1->add(new EmergencyLight(101));         //101房間的應(yīng)急燈 
b1->add(new ComputerCPU(10104));        //101房間4號(hào)桌上的計(jì)算機(jī) 
b1->add(new ComputerMonitor(10104));      //101房間4號(hào)桌上的計(jì)算機(jī)顯示器 
b1->goodNight( ); 
delete b1; 
}