首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和Java程序,填补代码中的空缺(1)~(5),将解答填入答题纸的对应栏内。 [说明] 对部分乐器进行建模,其类图如图6—1所示,包括:乐器(Instrument)、管乐器(Wind)、打击乐器(Percussion)、弦乐器(Stringed
阅读以下说明和Java程序,填补代码中的空缺(1)~(5),将解答填入答题纸的对应栏内。 [说明] 对部分乐器进行建模,其类图如图6—1所示,包括:乐器(Instrument)、管乐器(Wind)、打击乐器(Percussion)、弦乐器(Stringed
admin
2016-03-25
30
问题
阅读以下说明和Java程序,填补代码中的空缺(1)~(5),将解答填入答题纸的对应栏内。
[说明]
对部分乐器进行建模,其类图如图6—1所示,包括:乐器(Instrument)、管乐器(Wind)、打击乐器(Percussion)、弦乐器(Stringed)、木管乐器(Woodwind)、铜管乐器(Brass)。
下面是实现上述设计的Java代码,其中音乐类(Music)使用各类乐器(Instrument)进行演奏和调音等操作。
[Java代码]
enum Note{/*枚举各种音调*/
MIDDLE_C,C_SHARP,B~FLAT;//其他略
}
interface Instrument{/*接口,乐器*/
(1);//play方法接口
void adjust()j//adjust方法接口
}
class Wind(2){
public void play(Note n){System.out.println("Wind.play()"+n);}
public void adjust(){System.out.println("Wind.adjust()");}
}
/*类Percussion和Stringed实现代码略*/
class Brass(3){
public void play(Note n){System.out.println("Brass.play()"+n);}
public void adjust(){System.out.println("Brass.adjust()");}
}
class Woodwind extends Wind{
public void play(Note n){System.out.println("Woodwind.play()"+n);}
}
public class Music{
void tune(Instrument_i){i.play(Note.MIDDLE_C);}
void adjust(Instrument_i){i.adjust();}
void tuneAll((4)e){
for(Instrument i:e){
adjust(i);
tune(i);
}
}
public static void main(String[]args){
Music music=(5)Music();
Instrument[]orchestra={new Wind(),new Woodwind()};
music.tuneAll(orchestra);
}
}
本程序运行后的输出结果为:
Wind.adjust()
Wind.play()MIDDLE_C
Wind.adjust()
Woodwind.play()MIDDLE_C
(5)
选项
答案
new
解析
本题考查Java语言程序设计的能力,涉及类、对象、方法的定义和相关操作。要求考生根据给出的案例和代码说明,认真阅读理清程序思路,然后完成题目。
先考察题目说明。本题目中涉及的部分乐器,音乐类利用各类乐器进行演奏和调音等操作。根据说明进行设计,题目给出了类图(图6—1类图所示)。
图中父接口Instrument代表乐器,Java中设计为接口。Java中定义接口也即定义了抽象数据类型,用interface关键字。Instrument包含表示进行演奏的接口方法play()和表示调音的接口方法adjust(),接口方法默认为public,且没有方法实现。其中play()的参数Note实现为枚举类型(enum),以枚举各种音调。这两个方法由具体实现类完成实现,所以Instrument的play()和adjust()为方法声明,没有实现体,实现由子类完成:
void play(Note n);
void run();
Wind、Percussion和Stringed是实现接口Instrument的三个类,用关键字implements。
Java中实现接口的类必须全部实现接口中的方法,才能成为具体类,否则未被实现的方法需要加上abstract关键字,并且相应类必须为抽象类。Wind、Percussion和Stringed均为具体类,都要实现Instrument的play()方法和adjust()方法,只是各自演奏和调音方式有所不同,所以都包含了Instrument的play()方法接口和adjust()方法接口,并加以实现:
public void play(Note n){/*代码略*/)
public voidadjust(){/*代码略*/}
Wind的两个子类型Woodwind和Brass都继承自Wind,Java中继承用extends关键字,从而Woodwind和Brass也都实现了Instrument的play()方法和adjust()方法。图6—1中Woodwind类对应的Woodwind的实现中只有play()方法,没有adjust()方法的实现,因此其父类Wind的adjust()方法自动复制并被调用。
Music类对各类乐器进行演奏和调音操作。方法tune()为一个乐器的定调,其参数为乐器Intrument接口类型;方法adjust()为一个乐器进行调音,其参数也为Intrument接口类型;函数tuneAll()为每个乐器定调,其参数是所有乐器数组。Java中数组一旦创建,就可以通过成员length获取数组中成员个数。Java5.0开始,对集合还支持foreach,对集合中每个元素循环进行处理:
for(Instrument i:e){
adjust(i);
tune(i);
}
Music中的tune()和adjust()的参数均为Instrument接口类型引用i,调用play()和adjust()方法,其真正执行的方法根据所传实际对象而定,即动态绑定。
主控逻辑代码在Music类中程序主入口main()方法中实现。在main()方法中,先初始化Music类的对象,引用名称music,即:
Music musjc=newMusic();
并初始化各类乐器对象数组orchestra,各类乐器用父接口Instrument类型,因为向上转型是安全的,可以自动向上转型成为Instrument类型,用父接口类型表示其各个子类型,即:
Instrument[]orchestra={newWind(),newWoodwind()};或Instrument orchestra[]={new Wind(),new Woodwind()};然后调用music的tuneAll()方法:music.tuneAll(orchestra),实现为orchestra中的每个乐器定调,其参数为orchestra数组。数组orchestra中元素的类型为Instrument,所以tuneAll()的参数也应该为Instrument类型数组,而非其子类型。在tuneAll()方法体内部,为每个数组元素调用当前对象的tune()和adjust()。
数组orchestra中第一个元素为Wind类型对象,第二个元素为Woodwind类型对象。
tuneAll()中for循环的第一次执行时trine()方法中语句i.play(Note.MIDDLE_C);调用Wind中的play()方法,因此输出Wind.play()MIDDLE_C;adjust()方法中语句i.adjust();为调用Wiind类的adjust()方法,输出为Wind.adjust()。tuneAll()中循环的第二次执行tune()方法中语句i.play(Note.MIDDLE_C);时,调用Woodwind中的play()方法,因此输出Woodwind.play()MIDDLE_C;adjust()方法中语句i.adjust();为调用Woodwind类的adjust()方法,Woodwind没有实现adjust()方法,即Wind的adjust()方法,因此输出为Wood.adjust()。
因此,空(1)需要定义接口play(Note n),题目代码中已经给出用分号结尾,所以
空(1)为void play(Note n);空(2)需要实现接口Instrument,即implements Instrument;
空(3)需要继承Wind,即extends Wind;空(4)需要定调的乐器数组,即Instrument[];
空(5)处为创建Music类的对象的关键字new。
转载请注明原文地址:https://kaotiyun.com/show/KnjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
双击某个非可执行程序的文件名将(24)。
删除Windows中某个应用程序的快捷方式,意味着(39)。
计算机使用了一段时间后,系统磁盘空间不足,系统启动时间变长,系统响应延迟,应用程序运行缓慢,此时,需要对系统进行优化。(28)________________不属于系统优化工作。
计算机使用一段时间后发现,系统启动时间变长,系统响应迟钝,应用程序运行缓慢,为此,需要进行系统优化。系统优化工作不包括___________。
Windows XP的许多应用程序的“文件”菜单中,都有“保存”和“另存为”两个命令。以下对这两个命令的叙述,正确的是(36)。
编译程序的作用是将高级程序语言源程序翻译为(4)。
计算机在接通电源后,系统首先由(41)程序对内部每个设备进行测试。
()是移动互联网的组成部分。
随机试题
极低出生体重儿是指出生1小时内体重低于_________g;超低出生体重儿是指出生1小时内体重低于_________g。
A.肺动脉瓣区第2音(P2)亢进B.剑突下示心脏抬举性搏动C.心浊音界缩小或叩不出D.颈静脉充盈E.双下肺湿哕音
下列选项中,对锅炉工作特性的叙述正确的有()。
见证取样活动的送检单位是()。
《建设工程安全生产管理条例》第6条规定,建设单位应当向施工单位提供施工现场及毗邻区域内供水、排水、供电、供气、供热、通信、广播电视等地下管线资料,气象和水文观测资料,相邻建筑物和构筑物、地下工程的有关资料,并保证资料的( )。
我国会计法律制度的基本构成包括()。
张先生2年后可以获得100万元,年利率是10%,那么这笔钱的单利现值和复利现值分别为()万元。
老龄化社会,养老不仅是“家事”,也是“国事”“天下事”。稳固“孝”的精神磐石,要靠道德。而一旦道德防线失守,就只能靠法律来守住最后的底线。作为“最低的道德”,法律虽然不能让人主动行善,却能禁止最严重的违规行为。换言之,法律虽不能让“甩老族”受到感化,从而发
A、 B、 C、 D、 A通过观察并比较所列出的图形,可知其规律为逆时针90°旋转,且圆为白、黑、白、黑变化。故选A。
[A]RefuseGimmicks[B]BeWaryofPriceLevels[C]SayNotoUselessThings[D]NeverPayListPrice[E]Stand
最新回复
(
0
)