首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和Java程序,填写程序中的空,将解答写入答题纸的对应栏内。 【说明】 以下Java代码实现一个简单乐器系统,音乐类(Music)可以使用各类乐器(Instrument)进行演奏和调音等操作。对部分乐器进行建模,其类图如图5-1所示,包括:乐器
阅读以下说明和Java程序,填写程序中的空,将解答写入答题纸的对应栏内。 【说明】 以下Java代码实现一个简单乐器系统,音乐类(Music)可以使用各类乐器(Instrument)进行演奏和调音等操作。对部分乐器进行建模,其类图如图5-1所示,包括:乐器
admin
2020-05-13
101
问题
阅读以下说明和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
程序员下午应用技术考试
软考初级
相关试题推荐
某商场记录(统计)销售情况的数据库中,对每一种商品采用了国家统一的商品编码。这种做法的好处不包括(11)________________。
评价信息系统时需要听取各有关方面的意见。在听取系统操作人员的意见时,主要讨论信息系统的______。
在PowerPoint中,执行插入新幻灯片的操作后,被插入的幻灯片将出现在(53)。
某商场在节日期间推出以下几种可供客户选择的促销方式:①100元可以购买标价130元的商品;②满100元立减10元,再打8折;③打7折;④满100元即可参加抽奖,中奖率100%。10%为一等奖,退100元;30%为二等奖,退50元;60%为三等奖,退10元。
删除Windows中某个应用程序的快捷方式,意味着(39)。
某咨询顾问公司派小强统计本市各品牌汽车的占有率,以下4种统计方法中,小强应采用______方法,使估算结果较为可信。
信息处理工作前期,首先需要收集所需的数据,常常要做原始统计记录。做原始统计记录需要注意的事项中一般不包括(32)。
采购了多种品牌的部件进行计算机组装,每个部件都正常,连接、安装、配置操作也完全正确,但系统仍不能正常使用。很可能是____________问题。
综合布线系统由6个子系统组成,将图1-1中(1)~(6)处空缺子系统的名称填写在答题纸对应的解答栏内。为满足公司要求,通常选用什么类型的信息插座?
阅读以下说明,回答问题1至问题5。【说明】某一个网络地址块192.168.75.0中有5台主机A、B、C、D和E,它们的IP地址及子网掩码如表2-1所示。
随机试题
贫血是临床上常见的由多种原因或疾病引起的一种症状,由于血液中与其功能有关的有形成分和无形成分减少,造成一系列的血液功能异常,请用相关的组织知识,叙述贫血病人的血象变化。
检验工件弧面弯制得准确与否,应用__________。
Excel中使用工作表中数据,可以创建嵌入式图表或独立图表。当工作表数据发生变化时,下列叙述正确的是()。
f(x)=的第二类间断点个数为()
A.丘脑的感觉接替核B.丘脑的髓板内核群C.下丘脑外侧区D.基底神经节与非特异投射系统有关的结构是
患儿,女,5岁。食欲缺乏2年余,近日症状加重。平素嗜零食,面黄肌瘦,夜寝不安。实验室检查:血红蛋白90g/L,红细胞3.0×1012/L,锌10gmol/L。引起该健康问题的直接病因是
电梯的安装,改造,维修,必须由电梯制造单位或者其通过合同委托,同意的依照《特种设备安全监察条例》取得许可的单位进行。电梯质量以及安全运行涉及的质量问题应由()负责。
(操作员:张主管;账套:103账套;操作日期:2014年1月1日)输入下列科目的期初余额。库存商品——甲产品:50000数量:100
下列哪些选项不属于家庭社会工作的要素?( )。
Peoplegotoseefilmsthere.Peoplestudythingshere.
最新回复
(
0
)