阅读以下说明、图和Java代码,填补Java代码中的空缺(1)~(5),将解答写在答题纸的对应栏内。 【说明】 已知某公司主要有两大类耗电资产(Asset):计算机(ComputerAsset)和建筑物(BuildingAsset)。为了节

admin2013-07-03  44

问题 阅读以下说明、图和Java代码,填补Java代码中的空缺(1)~(5),将解答写在答题纸的对应栏内。
    【说明】
    已知某公司主要有两大类耗电资产(Asset):计算机(ComputerAsset)和建筑物(BuildingAsset)。为了节约能源,通过控制各种电源,将可关闭的房灯、计算机显示器等在夜间关闭。
    为了实现上述需求,设计了如下图所示的类图,并用下面的Java代码加以实现。
   
[Java代码】
abstract class Asset{         /*通用资产,基类*/
interface PowerSwitchable{    /*可在夜间关闭的电源的物体实现该接口*/
    public void void powerDown();
    public void powerUP();
}
abstract class BuildingAsset extends Asset{    /*建筑物资产*/
  protected int room;
  public BuildingAsset(int room){this.room=room;}
}
abstract class BuildingLight extends BuildingAsset{
  //灯的通用信息:fluorescent/incandescent等,略
  BuildingLight(int room Number){  super(roomNunaber);}
}
class Emergencynight  (1)  {    //应急灯,永不关闭
  EmergrncyLight(int roomNumber){
    Super(roomNumber);
}
}    。
class RoomLights  (2)  {
    RoomLights(int roomNurober){super(roomNumber);}
    Public void powerDown(){  //关电源,代码省略}
    Public void powerUp(){    //开电源,代码省略)
}
/*ComputerAsset、ComputerCPU和ComputerMonitor代码省略*/
public class BuildingManagement{
    Asset things[]=new Asset[24];
    int numItems=0;
    public void goodnight(){    //值班员定时“关闭”时调用,关闭可关闭的电源
  for(int i=0:i<things.length;i++)
    if(thingsinstanceof  (3)  )
       ((powerSwitchable)things).powerDown();
}
/*goodMoming()与goodNight()类似,依次调用powetUp(),其实现细节此处省略*/
public void add(Asset thing){    /*为建筑添加资产*/
  Things[  (4)  ]=thing;
}
public static void main(string[]args){
     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)extends BuildingLight (2)extends BuildingLight implements PowerSwitchable (3)PowerSwitchable (4)numltems++ (5)new

解析 本题考查考生使用Java语言进行面向对象程序设计的能力。首先要看懂所给类图中类与类之间的关系,然后阅读程序以实现类图中表示的各个要素。
    (1)处考查类EmergencyLight。从类图中可以看出,类EmergencyLight表示应急灯,其继承了类BuildingLight。EmergencyLight是BuildingLight的子类,并且在EmergencyLight的构造方法中,调用了父类BuildingLight的构造方法,采用super(),而且调用父类的构造方法必须是构造方法的第一条语句。在Java语言中,继承父类用extends父类来表示。因此,(1)处应填入extends BuildingLight。
    (2)处考查类RoomLights。从类图中可以看出,类RoomLights表示可在夜间关闭的房灯,其继承了类BuildingLight。RoomLights是BuildingLight的子类,而且均是可关闭的,具有开关电源的相同接口,均继承了类PowerS witchable,并且在RoomLights的构造方法中,调用了其父类的构造方法。Java语言中的继承是单根继承,即一个类只能有一个父类,而接口可以实现多个,因此将PowerSwitchable定义为接口,使用interface关键字。类RoomLights和ComputerMonitor均实现PowerSwitchable接口,使用implements关键字。(2)处用于添加继承和实现接口,应填入extends BuildingLight implements PowerSwitchable。
    系统中有各类资产,在类BuldingManagement中使用Asset通用资产类型数组,用add函数依次为建筑添加资产。南于add方法中对数组添加元素只有一条语句.需要在下标中完成指明当前添加资产元素的下标,并将下标后移。在goodNight方法中对可关闭的资产进行控制,需要判定其是否可关闭,也就是资产是否为类PowerSwitchable的实例。用instanceof关键字,判断对象是否为实现通用接口PowerSwitchable类型的实例。如果对象的类型是实现PowerSwitchable接口的类型,则转换为PowerSwitehable接口类型,并利用动态绑定机制,正确绑定到具体对象,执行对象的关闭电源行为。
    (3)处将接口作为一种引用类型,用instanceof判断对象是否为接口类型,因此应填入Pow-erSwitchable。
    (4)处指明当前添加资产元素的下标,并将下标后移,应填入numltems十十。
    类BuldingManagement中没有定义构造方法,编译器会自动生成一个默认的构造方法,采用new关键字进行对象创建。在使用完之后,通过delete进行释放。
    (5)处补充通过使用编译器生成的默认的构造方法进行对象创建,应填入new。
转载请注明原文地址:https://jikaoti.com/ti/9bW7FFFM
0

最新回复(0)