问答题

【说明】
某游戏公司现欲开发一款面向儿童的模拟游戏,该游戏主要模拟现实世界中各种鸭子的发声特征、飞行特征和外观特征。游戏需要模拟的鸭子种类及其特征如表10-6所示:
表10-6


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


其中,Duck为抽象类,描述了抽象的鸭子,而类RubberDuck、MallardDuck、 CottonDuck和RedHeadDuck分别描述具体的鸭子种类,方法fly()、quack()和display()分别表示不同种类的鸭子都具有飞行特征、发声特征和外观特征;类FlyBehavior与 QuackBehavior为抽象类,分别用于表示抽象的飞行行为与发声行为:类FlyNoWay与 FlyWithWings分别描述不能飞行的行为和用翅膀飞行的行为;类Quack、Squeak与 QuackNoWay分别描述发出“嘎嘎”声的行为、发出橡皮与空气摩擦声的行为与不发声的行为。请填补以下代码中的空缺。
【C++代码】
#include<iostream>
using namespace (1) ; class FlyBehavior{
public: (2) fly()=0;
};
class QuackBehavior{
public: (3) quack() = 0;
};
class FlyWithWings:public FlyBehavior{
public:void fly(){ cout<< “使用翅膀飞行 ! ” <<endl; }
};
class FlyNoWay:public FlyBehavior{
public:void fly(){ cout<< “不能飞行!”<<endl;}
};
class Quack:public QuackBehavior{
public:void quack(){ cout<<“发出\‘嘎嘎\’声 !”<<endl; }
};
class Squeak:public QuackBehavior{
public:void quack(){cout<<“发出空气与橡皮摩擦声!”<<endl; }
};
class QuackNoWay:public QuackBehavior{
public:void quack (){ cout<<“不能发声 !”<<endl; }
};
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(){/*此处省略显示橡皮鸭的代码*/ }
};
//其他代码省略

【参考答案】

(1) std
(2) virtual void
(3) virtual void
(4)......

(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)
热门 试题

问答题
【说明】 某游戏公司现欲开发一款面向儿童的模拟游戏,该游戏主要模拟现实世界中各种鸭子的发声特征、飞行特征和外观特征。游戏需要模拟的鸭子种类及其特征如表10-7所示: 表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(){ *此处省略显示橡皮鸭的代码* } }; 其他代码省略