阅读下列说明和Java代码,将应填入

题目
阅读下列说明和Java代码,将应填入
(n)
处的字句写在答题纸的对应栏内。
【说明】
  某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征。需要模拟的飞机种类及其特征如表6-1所示。表6-1



为支持将来模拟更多种类的飞机,采用策略设计模式(Strategy)设计的类



图6-1中,AirCraft为抽象类,描述了抽象的飞机,而类Helicopter、AirPlane、Fighter和Harrier分别描述具体的飞机种类,方法fly__(6)__和takeOff__(7)__分别表示不同飞机都具有飞行特征和起飞特征类FlyBehavior与TakeOffBehavior为抽象类,分别用于表示抽象的飞行为与起飞行为;类SubSonicFly与SuperSonicFly分别描述亚音速飞行和超音速飞行的行为;类VerticalTakeOff与LongDistanceTakeOff分别描述垂直起飞与长距离起飞的行为。【Java 代码】 interface FlyBehavior {
  public void fly();
 };
 class SubSonicFly
implements FlyBehavior{
  public void fly(){
System.out.println("亚音速飞行!"); }
 };
 class SuperSonicFly
implements FlyBehavior{
  public void fly(){
System.out.println("超音速飞行!" ); }
 };
 interface TakeOffBehavior {
  public void takeOff();
 };
 class VerticalTakeOff
implements TakeOffBehavior {
  public void takeOff (){
System.out.println("垂直起飞!" ); }
 };
 class LongDistanceTakeOff
implements TakeOffBehavior {
  public void takeOff(){
System.out.println("长距离起飞!"); }
 };
  abstract class AirCraft {
      protected? (1) ?;
      protected? (2) ?;
  public void fly(){? (3)? ; }
  public void takeOff()
{?? (4)?? ; };
 };
 class Helicopter(5)AirCraft{
      public Helicopter (){
      flyBehavior = new? (6)? ;
      takeOffBehavior = new?
(7)? ;
   }
  };
 //其它代码省略

参考答案和解析
答案:
解析:
试题答案 (1)FlyBehavior
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

阅读以下说明、Java代码和HTML文档,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

当用户启动html浏览器并首次打开下面的HTML文档时,Java Applet小程序在显示面板上显示字符串“Welcome!”;当html页面被其他窗口

遮挡后再次显示时,小程序在显示面板上显示“Welcome back!”。

【Java代码】

import javA.awt.*;

import javA.applet;

public class HelloApplet extends (1) {

public void paim((2)){

g.drawString(message,10,20);

message="welcome back!”;

}

public void (3) (){

message="Welcome!”;

}

private (4) message;

}

【HTML文档】

<html>

<head>

<title>HTML Test HelloApplet Page</title>

</head>

<body>

Test HelloApplet小程序<br>

<applet

codebase="."

code="(5) "

name="TestApplet"

width="400"

height="300"

</applet>

</body>

</html>


正确答案:(1)Applet (2)Graphics g (3)init (4)String (5)HelloApplet.Class
(1)Applet (2)Graphics g (3)init (4)String (5)HelloApplet.Class 解析:本题考的是Java的小应用程序的基础知识,当使用网页浏览器打开题目中给出的 html文件时,应该加载Java源代码编译后生成的字节码,

即java源文件对应的.class文件,题目中给出的可调用的公共类的类名为HelloApplet,因此,其对应的源文件和编译后的类文件应该为

HelloApplet.java和HelloApplet.class,空(5)应该填写上HelloApplet. class;
由于HelloApplet是一个小应用程序,所以应该继承小应用程序类Applet,第1空应填上Applet,根据私有变量message存储的数据是字符串

,所以其对应的类型应为String。题目中指明了当第一次显示页面时,显示的信息为“Welcome尸,而当首次调用小应用程序时,对小应用程序

方法调用的顺序为先init(),后paint(),当html页面被其他窗口遮挡后再次显示时,小程序将再次调用paint()。所以空(3)为init(),空2应

为paint方法填上参数,根据小应用程序接口的定义,空(2)应填上Graphics g。

第2题:

请仔细阅读以下关于某传输系统的技术说明、状态转换图及Java程序,根据要求回答问题1~问题2。

[说明]

传输门是传输系统中的重要装置。传输门具有Open(打开)、Closed(关闭)、Opening(正在打开)、 StayOpen(保持打开)和Closing(正在关闭)5种状态。触发状态的转换事件有click、complete和timeout3种。事件与其相应的状态转换如图7-16所示。

下面的[Java代码1]与[Java代码2]分别用两种不同的设计思路对传输门进行状态模拟,请填补代码段中的空缺语句。

[Java代码1]

请将以上[Java代码1]与[Java代码2]程序段中,(1)~(7)空缺处的语句填写完整。


正确答案:这是一道要求读者掌握状态转换图的程序设计与实现的综合题。本试题的解答思路如下。 根据(1)空缺处所在的程序段给出的注释信息“发生click事件时进行状态转换”可知(1)空缺处所在的方法为click表示当发生click事件时应该发生什么状态转换。找出传输门响应事件与其状态转换图(见图7-16)与click事件相关的内容并特别注意箭头所指的方向。由于发生click事件前的状态 CLOSED、CLOSING分别跳转到状态OPENING因此(1)空缺处所填写的内容是“state==CLOSED‖state ==CLOSING”。 同理由图7-16所示中的状态转换关系可知发生click事件前的状态OPENING、STAYOPEN分别跳转到状态CLOSING即(2)空缺处所填写的内容是“state==OPENING‖state==STAYOPEN”;发生click事件前的状态OPEN跳转到状态STAYOPEN即(3)空缺处所填写的内容是“state==OPEN”。 仔细阅读[Java代码2]程序段由语句private DoorState state=CLOSED;可知类Door的state成员变量用于记录类Door所处的状态而state变量的类型为Doorstate。由语句“public void click() {}”、“public void complete() {}”和“public void timeout() {}”可知Doorstate中分别具有click、timeout和complete方法用来响应对应的事件。根据(4)空缺处所在程序段给出的注释信息“发生click事件时进行状态转换”可得(4)空缺处所填写的内容是“state.click()”。 同理根据(5)空缺处的注释信息——“发生timeout事件时进行状态转换”可得(5)空缺处所填写的内容是“state.timeout()”;根据(6)空缺处的注释信息——“发生complete事件时进行状态转换”可得(6)空缺处所填写的内容是“state.complete()”。 根据(7)空缺处所在程序段给出的注释信息“定义一个基本的Closed状态”和语句“public void click()”可知(7)空缺处所填写的内容与传输门当前状态为CLOSED且发生Click事件时状态的迁移有关。结合图7-16所示中的状态转换关系可知在Click事件下CLOSED状态将迁移到OPENING因此(7)空缺处应该将传输门的状态设置为OPENING。由于Doorstate变量存储了当前其存储的传输门的实例因此可直接调用其方法setState设置状态。同时考虑到传输门的状态采用类的实例变量表示故(7)空缺处所填写的内容为“door.setState(door.OPENING)”。
这是一道要求读者掌握状态转换图的程序设计与实现的综合题。本试题的解答思路如下。 根据(1)空缺处所在的程序段给出的注释信息“发生click事件时进行状态转换”可知,(1)空缺处所在的方法为click,表示当发生click事件时应该发生什么状态转换。找出传输门响应事件与其状态转换图(见图7-16)与click事件相关的内容,并特别注意箭头所指的方向。由于发生click事件前的状态 CLOSED、CLOSING分别跳转到状态OPENING,因此(1)空缺处所填写的内容是“state==CLOSED‖state ==CLOSING”。 同理,由图7-16所示中的状态转换关系可知,发生click事件前的状态OPENING、STAYOPEN分别跳转到状态CLOSING,即(2)空缺处所填写的内容是“state==OPENING‖state==STAYOPEN”;发生click事件前的状态OPEN跳转到状态STAYOPEN,即(3)空缺处所填写的内容是“state==OPEN”。 仔细阅读[Java代码2]程序段,由语句private DoorState state=CLOSED;可知,类Door的state成员变量用于记录类Door所处的状态,而state变量的类型为Doorstate。由语句“public void click() {}”、“public void complete() {}”和“public void timeout() {}”可知,Doorstate中分别具有click、timeout和complete方法用来响应对应的事件。根据(4)空缺处所在程序段给出的注释信息“发生click事件时进行状态转换”可得,(4)空缺处所填写的内容是“state.click()”。 同理,根据(5)空缺处的注释信息——“发生timeout事件时进行状态转换”可得,(5)空缺处所填写的内容是“state.timeout()”;根据(6)空缺处的注释信息——“发生complete事件时进行状态转换”可得,(6)空缺处所填写的内容是“state.complete()”。 根据(7)空缺处所在程序段给出的注释信息“定义一个基本的Closed状态”和语句“public void click()”可知,(7)空缺处所填写的内容与传输门当前状态为CLOSED且发生Click事件时状态的迁移有关。结合图7-16所示中的状态转换关系可知,在Click事件下CLOSED状态将迁移到OPENING,因此(7)空缺处应该将传输门的状态设置为OPENING。由于Doorstate变量存储了当前其存储的传输门的实例,因此可直接调用其方法setState设置状态。同时考虑到传输门的状态采用类的实例变量表示,故(7)空缺处所填写的内容为“door.setState(door.OPENING)”。

第3题:

阅读以下说明和Java代码,将应填入(n)处的字句写在对应栏内。

[说明]

编写一个字符界面的Java Application 程序,接受用户输入的10个整数,并输出这10个整数的最大值和最小值。

[Java 代码]

import java. io.* ;

public class abc

{

public static void main ((1))

{int i, n=10, max=0, min=0, temp=0;

try {

BufferedReader br = new BufferedReader (

new InputStreamReader ( System.in ) );

max = min =Integer. parselnt ( br. readLine ( ) );

}. (2) ( IOExccption e ) {} ;

for ( i=2 ; i<=n ; i++ ) {

try {

BufferedReader br = new (3) (

new InputStreamReader ( System. in ) );

temp =(4) ( br. readLine ( ));

if (temp>max ) max=temp;

if (temp<min) (5)

} catch (IOException e ) {};

}

System.out.println ( "max="+max+"\nmin="+min );

}

}


正确答案:(1)String args [] (2) Catch (3) BufferedReadsr (4) Integer. parseInt (5) min=temp;
(1)String args [] (2) Catch (3) BufferedReadsr (4) Integer. parseInt (5) min=temp;

第4题:

阅读以下说明和Java以及HTML代码,将应填入(n)处的字句写在对应栏内。

[说明]

编写一个Applet程序,接受HTML文件传递的整数参数,根据该参数指定Applet中文本框的长度。编写对应的HTML文件运行这个Applet。

[Java 代码]

import java. applet.*;

import java. awt.*;

public class chuangdics extends (1)

{

TextField tf=new TextField ();

int tfLength=0;

public void init()

{

try

{

tfLength=Integer. parseInt( (2) ("length"));

tf. setColumns (tfLength);

add (tf);

}

catch (NumberFormatException nfe)

{

tf. (3) ("HTML 文件传人的参数格式错误。");

add(tf);

}

}

}

[HTML 代码]

<html>

<head>

<title>(4)</title>

</head>

<body>

<hr>

<applet code=chuangdics width=700 height=150>

<param name=length value=20>

(5)

<hr>

</body>

</htmI>


正确答案:(1)Applet (2)getParameter (3)setText (4)chuangdics (5)/applet>
(1)Applet (2)getParameter (3)setText (4)chuangdics (5)/applet>

第5题:

阅读以下说明和Java代码,将应填入(n)处的字句写在对应栏内。

【说明】

java.util库中提供了Vector模板类,可作为动态数组使用,并可容纳任意数据类型。该类的部分方法说明如下表所示:

【Java代码】

import (1);

public class JavaMain {

static private final int (2)= 6;

public static void main(String[] args){

Vector<Integer> theVector = new Vector< (3) >();

// 初始化 theVector, 将theVector的元素设置为0至5

for (int cEachItem = 0; cEachItem < ARRAY_SIZE; cEachItem++)

theVector.add((4));

showVector(theVector); // 依次输出theVector中的元素

theVector.removeElementAt(3);

showVector(theVector);

}

public static void showVector(Vector<Integer> theVector

if (theVector.isEmpty()) {

System.out.println("theVectcr is empty.");

return;

}

for (int loop = 0; loop < theVector.size(); loop++)

System.out.print(theVector.get(loop));

System.out.print(", ");

}

System.out.println();

}

}

该程序运行后的输出结果为:

0,1,2,3,4,5

(5)


正确答案:(1) java.util.Vector或java.util.* (2) ARRAY_SIZE (3) Integer (4) cEachItem (5) 01245
(1) java.util.Vector,或java.util.* (2) ARRAY_SIZE (3) Integer (4) cEachItem (5) 0,1,2,4,5 解析:本题主要考查Java语言的基本使用和类库的应用。
在使用Java库中所提供的类时,一般需要导入该类库所处的包。所以,空(1)需要填入Vector类所在的包。空(2)处主要考查变量在使用前需要先定义的基本概念,后续的代码中使用了ARRAY_SIZE变量,但其使用前没有定义,因此,空(2)处应该为该变量的定义。Java中Vector模板类可存储任意类型,在定义Vector模板类的对象时,需要指定Vector对象的类型。从后面的代码可以看出,Vector被用于存储整型数,所以,空(3)处应填写整型。初始化代码将0到5共6个整数存储到theVector对象中,所以,空(4)处将循环变量的值存入theVector中。程序运行时将首先输出0至5,其次会删除第3个元素,再次输出时将不再包含整数3。

第6题:

阅读以下说明和Java代码,回答问题1和问题2,将解答填写在对应栏内。

【Java代码】

class usethread implements (1) {

int num

usethread(int n){

num=n;

}

public void (2) {

for(int i=0;i<3;i++)

System.out.println("running:"+num);

System.out.println("finished:"+num);

}

public class multhread{

public static void main(String args[]) (3) InterruptedException{

Thread m1=new Thread(new usethread(1));

Thread m2=new Thread(new usethread(2));

m1.start();

m2.start();

m1.join();

m2.join();

}

}

【问题1】

补充完整上面Java代码中(n)处。

【问题2】

写出上面Java代码运行的结果。


正确答案:(1)Runnable (2)run() (3)throws 程序输出结果: running:1 running:2 running:1 running:2 running:1 running:2 finished:1 finished:2
(1)Runnable (2)run() (3)throws 程序输出结果: running:1 running:2 running:1 running:2 running:1 running:2 finished:1 finished:2 解析:本题考查Java中线程的相关知识。
题目要求按照程序给出的内容来完成填空和输出程序的运行结果。本题的关键是考查我们对线程的了解程度。线程的创建方法有两种,即通过类Thread和接口Runnable创建的方法。刚刚创建的线程还不能与其他的线程并发运行,当调用了方法start后,线程进入就绪态,在被Java虚拟机调度后才进入运行态。进入运行态的线程自动执行成员方法run(),在执行完这个成员方法后线程就又自动进入死亡态。下面来具体分析程序。
第(1)空在定义类usethread语句中,从后面的关键字implements可以推断出类继承了一个接口,而在Java中,接口一般只有成员变量和成员方法的定义而没有成员方法的具体实现。根据后面的程序new Thread(new usethread(1))可以知道创建了线程对象,而这种创建线程对象的方法是通过接口Runnable来实现的,因此类usethread肯定是继承了接口Runnable,所以此空答案为Runnable。
第(2)空是一个函数体的函数名,而函数体的作用是循环进行输出,从上面对线程的分析可以知道,此函数一定是run()函数,因此此空答案为run()。
第(3)空是入口函数后面的语句,结合Java程序的特点,再从此空后面的内容不难推断出,此处是要显式生成异常来处理程序中的异常。而在Java中,一般用关键字throws来显式生成异常,因此此空答案为throws。
对于问题2,我们可以根据程序来分析,程序中创建了两个线程,根据上面的分析我们可以知道,这两个线程都自动调用了函数run(),因此程序输出结果为:
running:1
running:2
running:1
running:2
running:1
running:2
finished:1
finished:2

第7题:

阅读以下技术说明及Java代码,将Java程序中(1)~(5)空缺处的语句填写完整。

[说明]

在一公文处理系统中,开发者定义了一个公文类OfficeDoc,其中定义了公文具有的属性和处理公文的相应方法。当公文件的内容或状态发生变化时,关注此OfficeDoc类对象的相应的DocExplorer对象都要更新其自身的状态。一个OfficeDoc对象能够关联一组DocExplorer对象。当OfficeDoc对象的内容或状态发生变化时,所有与之相关联的DocExplorer对象都将得到通知,这种应用被称为Observer(观察者)模式。以下代码采用Java语言实现,能够正确编译通过。

[Java代码]


正确答案:Observer(观察者)模式的设计意图是:定义对象间的一种一对多的依赖关系以便当一个对象的状态发生改变时所有依赖于它的对象都得到通知并被自动更新。(1)空缺处观察者对象更新自身的状态更新的数据应该来自被观察者对象所以此处应该为一Subject因此(1)空缺处所填写的内容是:Subject subject。同理(5)空缺处与(1)空缺处所填写的内容是相同的。 notifyObservers方法通知所有的观察者对象更新自身的状态因此(2)空缺处应该返回所有的观察者对象调用方法Observers()即可获得。(3)空缺处对每个观察者对象更新状态所以应该调用update方法update方法需要此被观察者对象作为参数所以使用this宋获取对象自身。DocExplorer是一个观察者因此需要实现接口Observer即(4)空缺处所填写的内容是:Observer。
Observer(观察者)模式的设计意图是:定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。(1)空缺处观察者对象更新自身的状态,更新的数据应该来自被观察者对象,所以此处应该为一Subject,因此(1)空缺处所填写的内容是:Subject subject。同理,(5)空缺处与(1)空缺处所填写的内容是相同的。 notifyObservers方法通知所有的观察者对象更新自身的状态,因此(2)空缺处应该返回所有的观察者对象,调用方法Observers()即可获得。(3)空缺处对每个观察者对象更新状态,所以应该调用update方法,update方法需要此被观察者对象作为参数,所以使用this宋获取对象自身。DocExplorer是一个观察者,因此需要实现接口Observer,即(4)空缺处所填写的内容是:Observer。

第8题:

下列代码的下划线处应填入的方法名是______。

import java.awt.*;

import java.applet.*;

public class Hello extends Applet{

public void______(Graphics g){

g.drawString("How are you!", 10, 10);

}

}

A) repaint

B) println

C) paint

D) show

A.

B.

C.

D.


正确答案:C

第9题:

阅读以下说明和JAVA 2代码,填入(n)处的。

[说明]

以下JAVA程序实现了在接口interface iShape2D的定义和应用,仔细阅读代码和相关注释,将程序补充完整。

[代码6-1]

interface iShape2D //定义接口

{

(1)

(2)

}

(3)//实现CRectangle类

{

int width, height;

(4) CRectangle (int w,int h) {

width=w;

height=h;

}

public void area ( ){ //定义area( )的处理方式

System. out.println ("area="+width*height);

}

}

(5)//实现CCircle类

{

double radius;

(6) CCircle (double r) {

radius=r;

}

public void area ( ) { //定义area( )的处理方式

System.out.println ("area="+pi*radius*radius);

}

}

[代码6-2]

public class app10_4

{

public static void main(String args[])

{

CRectangle rect=new CRectangle (5,10);

rect.area ( ); //调用CRectangle类里的area ( ) method

CCircle cir=new CCircle (2.0);

cir.area ( ); //调用CCircl类里的area ( ) method

}

}


正确答案:(1)final double pi=3.14; (2)abstract void area(); (3)class CRectangle implements iShape2D (4)public (5)class CCircle implements iShape2D (6)public
(1)final double pi=3.14; (2)abstract void area(); (3)class CRectangle implements iShape2D (4)public (5)class CCircle implements iShape2D (6)public 解析:本题JAVA程序实现了接口interface iShape2D的定义和应用。(1)和(2)定义pi和面积函数area(),可从下文得到,它们位置可以互换。(3)定义Crectangle,继承iShape2D。(4)应该为public关键字。(5)定义CCircle,继承iShape2D。(6)应该为public关键字。

第10题:

阅读以下说明和JAVA 2代码,将应填入(n)处的字句写在对应栏内。

[说明]

以下程序为类类型的变量应用实例,通过异常处理检验了类CCircle的变量的合法性,即参数半径应为非负值。仔细阅读代码和相关注释,将程序补充完整。

[JAVA代码]

//定义自己的异常类

class CCircleException extends Exception

{

}

// 定义类 CCircle

class CCircle

{

private double radius;

public void setRadius ( double r ) (1)

{

if ( r<0 ) {

(2)

}

else

(3)

}

Public void show ( ) {

System. out. println ( "area="+3.14*radius*radius );

}

}

public class ciusample

{

public static void main ( String args[] )

{

CCircle cir=new CCircle( );

(4) {

cir. setRadius ( -2.0 )

}

(5)

{

System. out. println ( e+" throwed" ) ;

}

cir. show( ) ;

}

}


正确答案:(1)throws CCircleException (2)throw new CCircleException(); //抛出异常 (3)radius=r; (4)try (5)catch(CCircleException e) //捕捉由setRadius()抛出的异常
(1)throws CCircleException (2)throw new CCircleException(); //抛出异常 (3)radius=r; (4)try (5)catch(CCircleException e) //捕捉由setRadius()抛出的异常 解析:本题主要考查JAVA语言中Class类型的变量应用。本段代码中对于类Ccircle的半径变量进行合法性检验,如果圆Ccircle的半径为负值,则抛出异常处理。

更多相关问题