首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和Java程序,填写程序中的空,将解答写入答题纸的对应栏内。 【说明】 以下Java代码实现一个简单乐器系统,音乐类(Music)可以使用各类乐器(Instrument)进行演奏和调音等操作。对部分乐器进行建模,其类图如图5-1所示,包括:乐器
阅读以下说明和Java程序,填写程序中的空,将解答写入答题纸的对应栏内。 【说明】 以下Java代码实现一个简单乐器系统,音乐类(Music)可以使用各类乐器(Instrument)进行演奏和调音等操作。对部分乐器进行建模,其类图如图5-1所示,包括:乐器
admin
2020-05-13
76
问题
阅读以下说明和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
程序员下午应用技术考试
软考初级
相关试题推荐
在Access2007中,若要想查询所有姓名为2个汉字的学生记录,应在准则中输入______。
在Excel中,设单元格A1中的值为80,B1中的值为35,若在C1单元格中输入函数“=IF(AND(A1>=60,B1>=60),“不及格”,“补考”)”,按回车键后,C1单元格中的值为()。
在Excel2010中,一个宗箱的函数计算包括()。
在Access中,查询“学生”数据表的所有记录及字段的SQL语句是______。
信息处理工作前期,首先需要收集所需的数据,常常要做原始统计记录。做原始统计记录需要注意的事项中一般不包括(32)。
2008年9月27日,地面指挥中心通过“天地语音系统”和航天员进行了通话。“天地语音系统”的地面设备包括通信设备、数据传输设备、分组交换设备和地面卫星通信站等,飞船上则配备了无线通信、视频传输与数据记录等设备,使得航天员与地面指挥中心随时可以进行信息交流。
由多台计算机组成的一个系统,这些计算机之间可以通过通信来交换信息,互相之间无主次之分,它们共享系统资源,程序由系统中的全部或部分计算机协同执行,执行过程对用户透明。管理上述计算机系统的操作系统是_________。
资源记录文件位于/var/named目录下。这个目录是在以上的(1)文件中定义的。从备选选项中选择(6)~(10)处的解答。在问题4的named.abc.net文件中,出现了5种类型的记录。其中SOA是(6),NS是(7),MX是(8),A是
阅读以下说明,回答问题1至问题5,将解答填入对应栏内。[说明]某大学要拟建一个小型局域网,如图10-5所示,PCI、PC3、PC5的IP地址分别为10.244.80.2,10.244.80.3,10.244.80.4子网掩码是255.255
随机试题
《水调歌头》(明月几时有)全词是围绕着什么来抒写情怀的
孕妇,25岁,G2P0,孕24周时,B超显示胎盘位于子宫前壁下段,部分覆盖宫颈内口,产科检查正常。根据B超及结合临床检查此时哪种考虑最合适
手工法红细胞计数的原则是
下列有关国有蚀资公司监事会的表述中,正确的有()。
个人征信系统除了主要收录个人的信贷信息外,还将收录()。
下列各项中,属于耕地占用税征税范围的有()。
下列教师促成的纪律属于结构创设的是()。
某行政机关违法扣押某企业价值10万元轿车一辆,扣押期间,由于保管不善使汽车损坏,修复费需2万元,如果该企业提出赔偿要求,那么该行政机关应采取的赔偿方式是:
ManyforeignerswhohavenotvisitedBritaincallalltheinhabitantsEnglish,fortheyareusedtothinkingoftheBritishIsle
A、sticktotheirpromisesB、makecompromisesC、helpthemD、goonwithtalksB
最新回复
(
0
)