(说明)
某游戏公司现欲开发一款面向儿童的模拟游戏,该游戏主要模拟现实世界中各种鸭子的发声特征、飞行特征和外观特征。游戏需要模拟的鸭子种类及其特征如表10-7所示:
.jpg)
为支持将来能够模拟更多种类鸭子的特征,采用策略设计模式(Strategy)设计的类图如图10-12所示:
.jpg)
其中,Duck为抽象类,描述了抽象的鸭子,而类RubberDuck、MallardDuck、 CottonDuck 和 RedHeadDuck分别描述具体的鸭子种类,方法fly()、quack()和display()分别表示不同种类的鸭子都具有飞行特征、发声特征和外观特征;接口FlyBehavior与 QuackBehavior分别用于表示抽象的飞行行为与发声行为;类FlyNoWay与FlyWithWings分别描述不能飞行的行为和用翅膀飞行的行为;类Quack、Squeak与QuackNoWay分别描述发出“嘎嘎”声的行为、发出橡皮与空气摩擦声的行为与不发声的行为。请填补以下代码中的空缺。
(Java代码)(1) FlyBehavior{
public void fly();
};(2) QuackBehavior{
public void quack();
};
class FlyWithWings implements FlyBehavior{
public void fly(){System.out.println(“使用翅膀飞行!”);}
};
class FlyNoWay implements FlyBehavior{
public void fly(){System.out.println(“不能飞行!”);}
};
class Quack implements QuackBehavior{
public void quack(){System.out.println(“发出/‘嘎嘎/’声!”); }
};
class Squeak implements QuackBehavior{
public void quack(){System.out.println(“发出空气与橡皮摩擦声 !”);
}
};
class QuackNoWay implements QuackBehavior{
public void quack(){System.out.println(“不能发声!”);}
};
abstract class Duck{
protected FlyBehavior (3);
protected QuackBehavior (4);
public void fly(){ (5); }
public void quack() { (6);};
public (7) void display();
};
class RubberDuck extends Duck{
public RubberDuck(){
flyBehavior=new (8);
quackBehavior=new (9);
}
public void display(){/*此处省略显示橡皮鸭的代码*/ }
};
//其他代码省略
[案例分析题] 阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。说明:某饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如图10.43所示。现在采用组合(Composition)模式来构造该饭店的菜单,使得饭店可以方便地在其中添加新的餐饮形式,得到如图10.44所示的类图。其中MenuComponent为抽象类,定义了添加(add)新菜单和打印饭店所有菜单信息(print)的方法接口。类Menu表示饭店提供的每种餐饮形式的菜单,如煎饼屋菜单、咖啡屋菜单等。每种菜单中都可以添加子菜
[试题]阅读以下说明和Java代码,将填入 (n) 处的字句在对应栏内。[说明]现需要统计某企业员工的月平均工资,即该企业本月发给员工的工资总和除以员工人数。假设企业本月发给员工的工资总和为sumSalary,该企业的员工总数为employeeNumber,下面的程序代码计算该企业员工本月的平均工资,其中需要处理employNumber为0的情况。[Java代码]import Java.util.Scanner;public class JavaMain{static float average(floa
[试题]阅读以下说明和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 {B.ufferedReader br = new BufferedReader (
[主观题]阅读以下说明和Java代码,将应填入(n)处的字句写在对应栏内。(说明)下面的Java程序演示了如何使用Applet在网页上显示图形用户界面CUI(graphical user interface),该实例显示一个时钟。每当浏览器显现Applet的内容时都调用start()函数,让applet得以开始工作(尤其时那些被stop()函数所关闭的工作)。每当浏览器不再显现Applet的内容时都调用stop()函数,让applet得以关闭某些甚耗资源的工作调用destroy()函数之后也会调用此函数。
[主观题]阅读以下说明和Java代码,将应填入(n)处的字句写在对应栏内。(说明)下面的Java程序演示了如何在用户等待载入主程序时显示logo图片的例子。logo图片mylogo.gif存放在文件夹image下面。显示logo图片的是一个线程类logo。(Java程序)import javax.swing.*;import java.awt.*;import java.awt.event.*;import javax.swing.ImageIcon.*;import java.lang.Runnable
[试题]阅读以下说明和Java代码,将应填入(n)处的字句写在对应栏内。(说明)下面的Java程序演示了程序竞争资源(Mutex的实例对象)而引起程序死锁的一种例子。(Java程序)import java.applet.*;import java.awt.*;//此处声明一个互斥类class Mutex { }class A extends (1){private Mutex first,second;public A(Mutex f,Mutex s){first = f;second = s;}publ
[试题]阅读以下说明和JAVA 2代码,填入(n)处。[说明]以下JAVA程序设计了类CSet,使用同一个名称(set)的method来传入数据。仔细阅读[代码6-1)、[代码6-2]和[代码6-3]和相关注释,将程序补充完整。[代码6-1]import java.io.*;class CSet{private int width;private int height;(1)public void set(String color){col=color; //(a)可输入长方形的颜色}public voi
[试题]阅读以下说明和java代码,将应填入(n)处的字句写在对应栏内。[说明]有若干教师,每个教师只有姓名,一个教师可以指导多名研究生;每名研究生有姓名和研究方向,程序最后输出每个教师指导的所有研究生的姓名和研究方向。[Java程序]public class Teacher {String name;int top=0;Student[] student=new Student[20];public Teacher() {}public Teacher(String name) { this.name=
[试题]阅读以下说明和java代码,将应填入(n)处的字句写在对应栏内。[说明]本程序中预设了若干个用户名和口令。用户输入正确的用户名后,可以查找对应的口令,一旦输入结束标记“end”,程序结束。[Java代码]import java. io. *:public class User {public String user;public Siring pass;public User() { }public User( String u,String p) {user=u;pass=p;}public S
[试题]阅读以下说明和Java代码,将应填入(n)处的字句写在对应栏内。(说明)下面代码里,instr是一个抽象类,它被两个子类wind和rain分别实现,而brass又继承了wind类,并覆盖了play方法。(程序)(1) class instr{(2) Void play();}class wind (3) instr{void play(){System.out.println("wind play!");}}class rain extends instr {void play(){Syste