问题 问答题

阅读以下说明和Java代码,填补Java代码中的空缺(1)~(5),将解答写在答题纸的对应栏内。

【说明】已知某公司主要有两大类耗电资产(Asset):计算机(ComputerAsset)和建筑物(BuildingAsset)。为了节约能源,通过控制各种电源,将可关闭的房灯、计算机显示器等在夜间关闭。为了实现上述需求,设计了如图6-1所示的类图,并用下面的Java代码加以实现。【Java代码】

答案

参考答案:

(1)extends BuildingLight

(2)extends BuildingLight implements PowerSwitchable

(3)PowerSwitchable 

(4)numItems++

(5)new

解析:

本题考查面向对象程序设计及其Java语言实现的能力,涉及类和接口、抽象类、对象、方法的定义和相关操作,以及继承和实现关系。要求考生根据给出的案 例、类图和执行过程说明,认真阅读理清程序思路,然后完成题目。   先考查针对案例的特定需求,构建类图整体结构。本题中根据类图定义了类: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,规定可在夜间关闭电源的物体的开关电源接口,即包含两个方法声明。因此,RoomLights和 ComputerMoniter实现了PowerSwitchable。   Java中继承用关键字extends后加父类名。本题目中,EmergencyLight是BuildingLight的子类,并且在子类的构造方 法中,调用父类的构造方法,采用super(),并且调用父类的构造方法必须要是构造方法中的第一条语句。RoomLights是 BuildingLight的子类,在子类的构造方法中,同EmergencyLight,调用父类的构造方法super()。同时RoomLights 和ComputerMonitor均是可关闭的,具有开关电源的相同接口。Java中的继承是单根继承,即只能有一个父类,而接口可以实现多个,因此将 PowerSwitchable定义为接口,也一样可作为引用数据类型,和类继承一样也表达"是一种"关系,采用interface关键字。 RoomLights和ComputerMonitor均实现PowerSwitchable接口,用implements关键字。 系统中有各类资产,在BuildingManagement中使用Asset通用资产类型数组,用add函数依次为建筑添加资产。由于add方法中对数组 添加元素只有一条语句,需要在下标中完成指明当前添加资产元素的下标,并将下标后移。在goodNight方法中对可关闭电源的资产进行控制,需要判定其 是否可关闭,也就是资产是否为PowerSwitchable类型的实例,用instanceof关键字,判定对象是否为实现通用接口 PowerSwitchable类型的实例。如果对象的类型是实现PowerSwitchable接口的类型,则转换为PowerSwitchable接 口类型,并利用动态绑定机制,正确绑定到具体对象,执行对象的关闭电源行为。 类BuildingManagement中没有定义构造方法,编译器会生成一个缺省的构造方法,采用new关键字进行对象创建。因此空(1)需要表现出继承extends BuildingLight;空(2)处添加继承和实现接口,即extends BuildingLight implements PowerSwitchable;空(3)处将接口作为一种引用类型,用instanceof判断对象是否为接口类型,即 PowerSwitchable;空(4)处完成指明当前添加资产元素的下标,并将下标后移,即numltems++;空(5)处补充通过使用编译器生成 的缺省构造方法创建对象,即new。

单项选择题 A1型题
单项选择题