首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和Java程序,填写程序中的空,将解答写入答题纸的对应栏内。 【说明】 以下Java代码实现一个简单乐器系统,音乐类(Music)可以使用各类乐器(Instrument)进行演奏和调音等操作。对部分乐器进行建模,其类图如图5-1所示,包括:乐器
阅读以下说明和Java程序,填写程序中的空,将解答写入答题纸的对应栏内。 【说明】 以下Java代码实现一个简单乐器系统,音乐类(Music)可以使用各类乐器(Instrument)进行演奏和调音等操作。对部分乐器进行建模,其类图如图5-1所示,包括:乐器
admin
2020-05-13
77
问题
阅读以下说明和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
程序员下午应用技术考试
软考初级
相关试题推荐
某商场在节日期间推出以下几种可供客户选择的促销方式:①100元可以购买标价130元的商品;②满100元立减10元,再打8折;③打7折;④满100元即可参加抽奖,中奖率100%。10%为一等奖,退100元;30%为二等奖,退50元;60%为三等奖,退10元。
操作系统的功能不包括______。
在Excel的A1单元格中输入函数“=IF(12,1,2)”,按回车键后,A1单元格中的值为()。
企业上云就是企业采用云计算模式部署信息系统。企业上云已成为企业发展的潮流,其优势不包括()。
某企业的大数据工程项目包括如下四个阶段的工作:①数据获取,②数据清洗与整理,③数据分析,④数据展现。一般来说,工作量较大、花费时间较长的阶段是______(1),技术含量最高的阶段是______(2),准备向有关部门递交成果的阶段是______(3)。
对新买的计算机需要记录保存的硬件主要参数中,不包括_______。
在Word编辑状态下,移动鼠标至某段左侧,当鼠标光标变成箭头时连击左键3下,结果会选中文档的(45)。
阅读以下说明,回答问题1至问题5,将解答填入答题纸对应的解答栏内。说明在一台计算机上安装完成Windows2000服务器及相应的服务组件。
综合布线系统由6个子系统组成,将图1-1中(1)~(6)处空缺子系统的名称填写在答题纸对应的解答栏内。为满足公司要求,通常选用什么类型的信息插座?
随机试题
女性,35岁,急性阑尾炎穿孔、阑尾切除术后第5天,发热、腹痛,腹泻每天3次,稀水便,腹壁切口未见明显红肿。最可能的并发症是
A.胸骨中段B.胸骨上1/3段C.胸骨下1/3段D.胸骨上1/2段E.胸骨下1/2段胸外按压的部位
治疗霍乱首选抗菌药物为( )。
下列哪味药长于清肺火及上焦实热
有关对城市道路工程冬期施工的说法中,正确的是()。
下列经济指标中,构成财务现金流量的基本要素的有()。
甲公司系增值税一般纳税人,采用公允价值模式计量投资性房地产。有关资料如下:资料一:2×18年12月1日甲公司与A公司签订协议,将自用的办公楼出租给A公司,租期为3年,每年不含税租金为1000万元,于每年年末收取,2×19年1月1日为租赁期开始日,2×2
从所给四个选项中,选择最合适的一个填入问号处,使之呈现一定的规律性:
监狱工作人员甲多次指使被关押的罪犯殴打其他被监管人,造成被殴打的人伤残。甲的行为构成()
Personalityistoalargeextentinherent——A-typeparentsusuallybringaboutA-typeoff-spring.Buttheenvironmentmustalsoh
最新回复
(
0
)