首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和Java程序,填写程序中的空,将解答写入答题纸的对应栏内。 【说明】 以下Java代码实现一个简单乐器系统,音乐类(Music)可以使用各类乐器(Instrument)进行演奏和调音等操作。对部分乐器进行建模,其类图如图5-1所示,包括:乐器
阅读以下说明和Java程序,填写程序中的空,将解答写入答题纸的对应栏内。 【说明】 以下Java代码实现一个简单乐器系统,音乐类(Music)可以使用各类乐器(Instrument)进行演奏和调音等操作。对部分乐器进行建模,其类图如图5-1所示,包括:乐器
admin
2020-05-13
46
问题
阅读以下说明和Java程序,填写程序中的空,将解答写入答题纸的对应栏内。
【说明】
以下Java代码实现一个简单乐器系统,音乐类(Music)可以使用各类乐器(Instrument)进行演奏和调音等操作。对部分乐器进行建模,其类图如图5-1所示,包括:乐器(Instrument)、打击乐器(Percussion)、弦乐器(Stringed)、管乐器(Wind)、木管乐器(Woodwind)、铜管乐器(Brass)。
[Java代码]
import java.util.ArrayList;
enum Note { /*枚举各种音调*/
MIDDLE_C,C_SHARP,B_FLAT; //其他略
}
abstract class Instrument {/*乐器*/
________________; //play方法
abstract void adjust(); //adjust抽象方法
}
class Wind ________________{
publicvoid play(Note n){System.out.println(“Wind.play()”+n);}
public void adjust(){System.out.println(“Wind.adjust()”);}
}
/*类Percussion和Stringed实现代码略*/
class Brass ________________(
public void play(Note n)f System.out.println(“Brass.play()”+n); }
public void adjust(){System.out.println(“Brass.adjust()”),}
}
class Woodwind extends Wind {
publicvoidplay(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(________________e){
for(int j=0;j<e.size();j++) {
Instrument i=e.get(j);
adjust(i);
tune(i);
}
}
public static void main(String[]args){
________________musiC=new Music();
ArrayList<Instrument>orchestra=new ArrayList<>();
Orchestra.add(new Wind());
Orchestra.add(new Woodwind());
Music.tuneAll(archestra);
}
}
选项
答案
abstract void play(Note n) extends Instrument extends Wind ArrayList<Instrument> Music
解析
本题考查Java语言程序设计的能力,涉及类、对象、方法的定义和相关操作。要求考生根据给出的案例和代码说明,阅读并完成程序填空。
本题目中涉及的部分乐器,音乐类利用各类乐器进行演奏和调音等操作。根据说明进行设计,题目给出了类图(如图5—1所示)。
图中父类Instrument代表乐器,Java中设计为抽象类。Java中定义抽象类用abstract关键字。Instrument包含表示进行演奏的抽象方法play()和表示调音的抽象方法adjust(),抽象方法没有方法实现,直接用“;”结束,即没有{}括起来的实现体。其中play()的参数Note实现为枚举类型(enum),以枚举各种音调。这两个方法由具体子类完成实现:
abstract void play(Note n);
abstract void adjust();
Wind、Percussion和Stringed是继承Instrument的三个子类,Woodwind和Brass是继承Wind的两个子类,继承用关键字extends。Java中继承抽象类的类必须全部实现抽象类中的抽象方法,才能成为具体类进行实例化,否则未被实现的方法仍然需要保留abstract关键字,并且相应类也仍然必须为抽象类且保留abstract关键字。Wind、Percussion和Stringed均为具体类,都要实现Instrument的play()方法和adjust()方法,只是各自演奏和调音方式有所不同,所以都包含了Instrument的play()方法和adjust()方法,并加以实现:
public void play(Note n){/*代码略*/}
public void adjust(){/*代码略*/}
图5-1中Woodwind类对应的Woodwind的实现中只有play()方法,覆盖(Override)了父类中的play(),没有adjust()方法的实现,因此其父类Wind的adjust()方法自动复制并被调用,而Brass中play()和adjust()均有实现,即都覆盖了父类中的方法。
Music类对各类乐器进行演奏和调音操作。方法tune()为一个乐器的定调,其参数为抽象类Intrument类型;方法adjust()为一个乐器进行调音,其参数也为抽象类Intrument类型;函数tuneAll()为所有乐器定调,其参数是所有乐器容器。tuneAll()方法的调用来自其中maha()方法,其中参数为所构造的ArrayList<Instrument>类型的容器,容器中对象元素类型为Instrument,在源代码开头的导入类型中,import java.util.ArrayList;只导入了ArrayList,所以tuneAll的参数类型为ArrayList<Instrument>,若上下文中List有效,也可用List<Insmunent>。并采用for循环获取容器中每一个乐器并进行adiust()和tune()调用,即:void tuneAll(ArrayList<Instrument>e ) {
for(int j=0; j<e.size(); j++){
Instrument i=e.get(j);
adjust(i);
tune(i);
}
}
Music中的tune()和adjust()的参数均为抽象类Instrument类型引用i,再通过i.play()和i.adjust()的方法调用,其真正执行的方法根据所传实际对象而定,即动态绑定。
主控逻辑代码在Music类中程序主入口main()方法中实现。在main()方法中,先初始化Music类的对象,引用名称为music,即:
Music music=new MusiC();
并初始化各类乐器对象容器orcheslra,各类乐器用父类Instrument类型,因为向上转型是安全的,可以自动向上转型成为Instrument类型,用父类型表示其各个子类型,即:
ArrayList<Instrument>orchestra=new ArrayList<>();
然后使用ArrayList中add()方法向容器中加入具体乐器对象,此处以Wind及其子类Woodwind为例:
Orchestra.add(new Wind());
Orchestra.add(new Woodwind());
然后调用music的tuneAll()方法:music.tuneAll(orchestra);,实现为orchestra中的每个乐器定调,其参数为orchestra容器。orchestra中元素的类型为Instrument,所以tuneAll()的参数也应该为Instrument类型相应的容器,而非其子类型。在tuneAll()方法体内部,为每个元素调用当前对象的tune()和adjust()。
综上所述,空(1)需要定义抽象方法play(Note n),题目代码中已经给出用分号结尾,所以空(1)为abstract void play(Note n);空(2)需要继承抽象类Instrument,即extendsInstrument;空(3)需要继承Wind,即extends Wind;空(4)需要定调的乐器容器,即ArrayList<Instrument>;空(5)处为创建Music类的对象,即Music。
转载请注明原文地址:https://kaotiyun.com/show/X2jZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
下列操作中______可以随意改变窗口大小。
______不属于企业信息系统存在的问题。
某个字段的数据是原始数据计算的结果,该字段的宽度和小数位数对数据的精度有影响。一般来说,小数位数的确定需要考虑______。
为了提高磁盘存取效率,人们常每隔一段时间进行磁盘碎片整理。所谓磁盘碎片是指磁盘使用一段时间后,(20)。
某企业的大数据工程项目包括如下四个阶段的工作:①数据获取,②数据清洗与整理,③数据分析,④数据展现。一般来说,工作量较大、花费时间较长的阶段是______(1),技术含量最高的阶段是______(2),准备向有关部门递交成果的阶段是______(3)。
在PowerPoint2007中,为精确控制幻灯片的放映时间,可使用______功能。
Windows系统的快捷方式确切的含义是______。
在计算机程序设计语言中,可以直接被计算机识别并执行的是______。
一批数据的__________代表这批数据的一般水平,掩盖了其中各部分数据的差异。
请根据网页显示的效果图和网页中的元素说明,将HTML文本中(n)处的解答填入答题纸对应的解答栏内。说明在Ⅲ浏览器中输入常春藤大学招生办公室主页的网址并回车后,网页显示的效果如图5-1所示。HTML文本<html><he
随机试题
平均预测法
拟成立的中外合资有限公司经国家审批机构批准后,应当自收到批准证书之日起______内,向工商行政管理机关办理登记手续。
我国《工程岩体分级标准》中,根据下列哪些指标确定岩体的基本质量指标?
为防止废石引起泥石流危害下游环境,合理的措施是设置()。
物价持续上涨,存货发出采用“先进先出法”时,月末存货的价值将大于采用其他方法时月末存货的价值。()
增值税的纳税地点规定,总机构和分支机构不在同一县(市)的,应当分别向各自所在地主管税务机关申报纳税;经县(市)国家税务机关批准,可以由总机构汇总项总机构所在地主管税务机关申报纳税。()
“课程不应指向活动,而应直接关注制定一套有结构、有序列的学习目标,所有教学活动都是为达到这些目标而服务的”,这种观点意味着课程即()。
气象学家称,当他们设计出能够刻画大气层一切复杂细节的准确数学模型的时候,他们就能作出完全准确的天气预报。这其实是一种似是而非的夸耀,这种夸耀永远无法被证明是错的,因为任意一次天气预报只要有失误,就能在相关的数学模型上找到不准确之处。因此,气象学家的这种宣称
国立中央大学
以下Case语句中错误的是______。
最新回复
(
0
)