阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某游戏公司现欲开发一款面向儿童的模拟游戏,该游戏主要模拟现实世界中种种鸭子的发声特征、飞行特征和外观特征。游戏需要模拟的鸭子种类及其特征如下表所示。 为支持将

admin2018-07-23  20

问题 阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。
  【说明】
    某游戏公司现欲开发一款面向儿童的模拟游戏,该游戏主要模拟现实世界中种种鸭子的发声特征、飞行特征和外观特征。游戏需要模拟的鸭子种类及其特征如下表所示。

为支持将来能够模拟更多种类鸭子的特征,采用策略设计模式(Strategy)设计的类图如题图6-1所示。

    其中,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()

解析 本题考查面向对象的程序设计的抽象类和多态,使用的语言是Java。
    由题中所给信息,接口FlyBehavior与QuackBehavior分别用于表示抽象的飞行行为与发声行为,可知空(1)处和空(2)处都应填入interface。
    由子类RubberDuck类中出现的flyBehavior和quackBehavior在之前并没有被定义过可知,空(3)处和空(4)处需要声明这两个对象分别为FlyBehavior和QuackBehavior类型,否则出错。
  由“Protected FlyBehavior flyBehavior;Protected QuackBehavior quackBehavior;”及函数名可知该函数体应调用类FlyBehavior中的fly函数和类QuackBehavior中的quack函数。所以空(5)处和空(6)处应分别填入:flyBehavior.fly和quackBehavior.quack()。
    由于Duck类为抽象类,因此需要一个抽象函数来描述鸭子的总体外观特征,所以空(7)处应填入abstract。
    对于空(8)处和空(9)处,由题中所给信息可知RubberDuck是“发出橡皮与空气摩擦声”并且“不能飞行”的鸭子种类,因此构造函数中创建的对象flyBehavior和quackBehavior对应的类型分别为FlyNoWay和Squeak。
转载请注明原文地址:https://kaotiyun.com/show/rKDZ777K
0

相关试题推荐
最新回复(0)