软题库 学习课程
当前位置:信管网 >> 在线考试中心 >> 信息系统项目管理师题库 >> 试题查看
试卷年份2007年上半年
试题题型【分析简答题】
试题内容

试题七
阅读下列说明和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(){/*此处省略显示橡皮鸭的代码*/  }
};
//其他代码省略



查看答案

相关试题

4题:

试题四
阅读以下说明和图,填补流程图中的空缺。
【说明】
在一条农村公路的一边稀疏地分布着房子,其分布如图10-5所示。某电信公司需要在某些位置放置蜂窝电话基站,由于基站的覆盖范围是6公里,因此必须使得每栋房子到某个基站的直线距离不超过6公里。为简化问题,假设所有房子在同一直线上,并且基站沿该直线放置。现采用贪心策略实现用尽可能少的基站覆盖所有的房子。

实现贪心算法的流程如图10-6所示,请填充其中空白并计算该算法的时间复杂度,其中:
1.d[i](1≤i≤N)表示第i个房子到公路A端的距离,N表示房子的总数,房子的编号按照房子到公路A端的距离从小到大进行编号。
2.s[k]表示第k(k≥1)个基站到公路A端的距离,算法结束后k的值为基站的总数。


该算法的时间复杂度为  (5)  。



答案解析与讨论:www.cnitpm.com/st/2455317292.html

5题:

试题五
(以下试题五至试题七中任选一题解答)
阅读以下说明和C语言函数,应填入  (n)  处。
【说明】
在一个分布网络中,资源(石油、天然气、电力等)可从生产地送往其他地方。在传输过程中,资源会有损耗。例如,天然气的气压会减少,电压会降低。我们将需要输送的资源信息称为信号。在信号从信源地送往消耗地的过程中,仅能容忍一定范围的信号衰减,称为容忍值。分布网络可表示为一个树型结构,如图10-9所示。信号源是树根,树中的每个节点(除了根)表示一个可以放置放大器的子节点,其中某些节点同时也是信号消耗点,信号从一个节点流向其子节点。
每个节点有一个d值,表示从其父节点到该节点的信号衰减量。例如,在图10-9中,节点w、p、q的d值分别为2、1、3,树根节点表示信号源,其d值为0。
每个节点有一个M值,表示从该节点出发到其所有叶子的信号衰减量的最大值。显然,叶子节点的M值为0。对于非叶子节点j,M(j)=max{M(k)+d(k)|k是j的孩子节点}。在此公式中,要计算节点的M值,必须先算出其所有子节点的M值。

在计算M值的过程中,对于某个节点i,其有一个子节点k满足d(k)+M(k)大于容忍值,则应在k处放置放大器,否则,从节点i到某叶子节点的信号衰减量会超过容忍值,使得到达该叶子节点时信号不可用,而在节点i处放置放大器并不能解决到达叶子节点的信号衰减问题。
例如,在图10-9中,从节点p到其所有叶子节点的最大衰减值为4。若容忍值为3,则必须在s处放置信号放大器,这样可使得节点p的M值为2。同样,需要在节点小v处放置信号放大器,如图10—10阴影节点所示。若在某节点放置了信号放大器,则从该节点输出的信号与信号源输出的信号等价。

函数placeBoosters(TreeNode*root)的功能是:对于给定树型分布网络中各个节点,计算其信号衰减量的最大值,并确定应在树中的哪些节点放置信号放大器。
全局变量Tolerance保存信号衰减容忍值。
树的节点类型定义如下:
typedef struct TreeNode{
int id;                      /*当前节点的识别号*/
int ChildNum;                /*当前节点的子节点数目*/
int d;                       /*父节点到当前节点的信号衰减值*/
struct TreeNode **childptr;  /*向量,存放当前节点到其所有子节点的指针*/
int M;                       /*当前节点到其所有子节点的信号衰减值中的最大值*/
bool boost;                  /*是否在当前节点放置信号放大器的标志*/
}TreeNode;
【C语言函数】
void placeBoosters(TreeNode *root)
{                               /*  计算root所指节点处的衰减量,如果衰减量超出了容忍值,则放置放大器*/
TreeNode *p;
int i,degradation;
if(  (1)  ){
degradation = 0;root->M = 0;
i = 0;
if  (i>=root->ChildNum)
return;
p=  (2)  ;
for(;i<root->ChildNum  &&  p; i++,p =  (3)  ){
p->M = 0;
(4)  ;
if  (p->d+p->M>Tolerance)  {  /*在p所指节点中放置信号放大器*/
p->boost=true;
p->M = 0;
}
if  (p->d + p->M > degradation)
degradation = p->d + p->M;
}
root->M =   (5)  ;
}
}

答案解析与讨论:www.cnitpm.com/st/2455416424.html

6题:

试题六
阅读下列说明和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(){/*此处省略显示橡皮鸭的代码*/   }
};
//其他代码省略



答案解析与讨论:www.cnitpm.com/st/245551202.html