阅读下列说明和Java代码,应填入(n)处。 【说明】 某游戏公司现欲开发一款面向儿童的模拟游戏,该游戏
阅读下列说明和Java代码,应填入(n)处。
【说明】
某游戏公司现欲开发一款面向儿童的模拟游戏,该游戏主要模拟现实世界中各种鸭子的发声特征、飞行特征和外观特征。游戏需要模拟的鸭子种类及其特征如表10-7所示:
为支持将来能够模拟更多种类鸭子的特征,采用策略设计模式(Strategy)设计的类图如图10-12所示:
其中,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(){/*此处省略显示橡皮鸭的代码*/ }
};
//其他代码省略
(1) interface (2) interface (3) flyBehavior. (4) quackBehavior. (5) flyBehavior.fly() (6) quackBehavior.quack() (7) abstract (8) FlyNoWay() (9) Squeak() 解析:FlyBehavior与QuackBehavior分别表示抽象的飞行特征,它们仅仅规定了接口,因此空(1)和(2)应该填写interface;Duck是各种鸭子种类的基类,而每一种鸭子都具有飞行特征和发声特征,这两种特征分别通过FlyBehavior和QuackBehavior来实现,因此空(3)和(4)处应该为这两个类的对象引用,Duck的飞行动作和发声动作通过abstract与其飞行特征对象和发声特征对象相关,所以,直接调用这两个类的飞行和发声动作即可。因为每一种Duck的显示特征是不相同的,因此display方法应该为抽象的方法;每一种具体的鸭子种类的飞行特征和发声特征是不同的,因此,在每一种具体鸭子类的构造函数中需要指定其具有的飞行特征和发声特征。表10-7已经指出了RubberDuck的这两种特征分别为FlyNoWay和Squeak,所以,通过构造相应类的对象来实现该特征。
如图所示的电路中,当变阻器R的滑片P向下滑动时,电压表V和电流表A的示数变化的情况是()A.V和A 物理 2020-04-08 …
设向量a,b,c不共面,实数u,v,w不全为0,试求下列方程的解.向量a*向量r=u向量b*向量r 数学 2020-05-13 …
只要a与v的方向相同,不论a是变大还是变小或不变,v一定增大吗只要a与v的方向相反,不论a是变大还 物理 2020-05-16 …
匀变速运动``问题根据公式和定理a=v/t当v与a同向```a逐渐减小变为0时```v最大~`不是 物理 2020-06-28 …
物理三角形追击问题题目的大意是:3个人站成一个等边三角形,边长为L,三个人分别为A、B、C,然后A 其他 2020-08-03 …
如图所示,光滑水平面上,A、B两球沿同一直线相向运动,已知mA=3kg,vA=5m/s,mB=4kg 其他 2020-11-01 …
向量内积向量v(1,1,1)点M(x,y,z)│向量OM·v│/│OM││v│=│e1·v││v│怎 数学 2020-11-07 …
V正>V逆平衡正向移动?很过书说过~V正>V逆~平衡正向移动~A(g)=2B(g)这个反应在密闭容器 化学 2020-12-15 …
对已经达到化学平衡状态的下列反应2X(g)+Y2(g)Z(g),减小压强时,对反应产生的影响是()A 化学 2020-12-15 …
由加速度定义式a=△v△t可知()A.a与△v成正比B.a的方向与△v的方向相同C.物体加速度大小由 物理 2021-01-22 …