Quack、Squeak 与 QuackNoWay 分别描述发出“嘎嘎”声的行为、发出橡皮与空气摩擦声的行为与不发
声的行为。请填补以下代码中的空缺。
[C++代码]
#include
using namespace 1;
class FlyBehavior {
public : 2 fly() = 0;
};
class QuackBehavior {
public:3 quack() = 0; };
class FlyWithWings:public FlyBehavior{
public: void fly(){ cout << \使用翅膀飞行 \ };
class FlyNoWay:public FlyBehavior{
18 软件设计师考试历年真题
第36页 共 19 页 软件设计师考试历年真题 第35页 共 19 页 软件设计师历年试题 软件设计师历年试题
public: void fly(){ cout << \不能飞行 \ };
class Quack:public QuackBehavior{
public: void quack(){ cout << \发出\\'嘎嘎\\'声 \
};
class Squeak:public QuackBehavior{
public: void quack(){ cout << \发出空气与橡皮摩擦声 \ };
class QuackNoWay:public QuackBehavior{
public: void quack (){ cout << \不能发声 };
class Duck {
protected:
FlyBehavior * 4 ;
QuackBehavior * 5 ;
public:
void fly(){ 6 ; }
void quack() { 7 ; };
virtual void display()=0; };
class RubberDuck: public Duck {
public:
RubberDuck(){
flyBehavior = new 8 ;
quackBehavior = new 9 ; }
\
~RubberDuck(){
if(!flyBehavior) delete flyBehavior;
if(!quackBehavior) delete quackBehavior; }
void display(){ /*此处省略显示橡皮鸭的代码 */ } };
//其它代码省略
试题七共 15 分
阅读下列说明和 Java 代码将应填入 n 处的字句写在答题纸的对应栏内。
[说明]
某游戏公司现欲开发一款面向儿童的模拟游戏该游戏主要模拟现实世界中各种鸭子的发声特征、飞
行特征和外观特征。游戏需要模拟的鸭子种类及其特征如表 7-1 所示
19 软件设计师考试历年真题
第38页 共 20 页 软件设计师考试历年真题 第37页 共 20 页 软件设计师历年试题 软件设计师历年试题
为支持将来能够模拟更多种类鸭子的特征采用策略设计模式(Strategy)设计的类图如图 7-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(\发出\\'嘎嘎\\'声 \
20 软件设计师考试历年真题
第40页 共 21 页 软件设计师考试历年真题 第39页 共 21 页 软件设计师历年试题 软件设计师历年试题 };
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(){ /* 此处省略显示橡皮鸭的代码 */ }