信管网试题内容
信管网 导航

试卷名称:2007年上半年软件设计师考试下午真题试题(案例分析)

考试年份:2007年上半年

试题来源:《2007年上半年软件设计师考试下午真题试题(案例分析)》在线考试

试题内容

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



参考答案:暂时没有答案(仅供参考) 收藏

【解析】

普通会员无法查看试题解析。[开通试题解析服务]