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

阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
某软件系统中,已设计并实现了用于显示地址信息的类 Address(如图6-1所示),现要求提供基于 Dutch语言的地址信息显示接口。为了实现该要求并考虑到以后可能还会出现新的语言的接口1,决定采用适配器( Adapter)模式实现该要求,得到如图61所示的类图。

【Java代码】
Import  java.util.*;
class Address  {
public void street()     {       //      实现代码省略           }
public void zip()        {       //      实现代码省略           }
public vold city ()       {       //      实现代码省略           }
// 其他成员省略
}
class Dutchaddress {
public void straat()     {       //     实现代码省略           }
publie vo1 d postcode()   {      //     实现代码省略           }
public void plaats()       {     //     实现代码省略           }

//其他成员省略
}
class  DutchAddressAdapter extends DutchAddress    {
private  (1);
public DutchAddressAdapter (Address addr)    {
address=addr;
}
publie void straat()   {
(2);
public void postcode()   {
(3);
public void plaats()    {
(4);
}
//其他成员省略
}
class Test  {
Public static void main(String[] args) {
Adress addr = new Address();
(5);
System.out.printn("\n The DutchAddress\n");
testDuch(addrAdapter);
}
Static void testDuch  (DutchAddress  addr) {
addr.straat();
addr postcode ();
addr plaats();
}
}

查看答案

相关试题

3题: 阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某软件公司欲设计实现一个虚拟世界仿真系统。系统中的虚拟世界用于模拟现实世界中的不同环境(由用户设置并创建),用户通过操作仿真系统中的1~2个机器人来探索虚拟世界。机器人维护着两个变量b1和b2,用来保存从虚拟世界中读取的字符。
该系统的主要功能描述如下:
(1)机器人探索虚拟世界(RunRobots)。用户使用编辑器(Editor)编写文件以设置想要模拟的环境,将文件导入系统(LoadFile)从而在仿真系统中建立虚拟世界(SetupWorld)。机器人在虚拟世界中的行为也在文件中进行定义,建立机器人的探索行为程序(SetupProgram)。机器人在虚拟世界中探索时(RunProgram),有2种运行模式:
①自动控制(Run):事先编排好机器人的动作序列(指令(Instruction)),执行指令,使机器人可以连续动作。若干条指令构成机器人的指令集(InstructionSet)。
②单步控制(Step):自动控制方式的一种特殊形式,只执行指定指令中的一个动作。
(2)手动控制机器人(ManipulateRobots)。选定1个机器人后(SelectRobot),可以采用手动方式控制它。手动控制有4种方式:
①Move:机器人朝着正前方移动一个交叉点。
②Left:机器人原地沿逆时针方向旋转90度。
③Read:机器人读取其所在位置的字符,并将这个字符的值赋给b1;如果这个位置上没有字符,则不改变b1的当前值。
④Write:将b1中的字符写入机器人当前所在的位置,如果这个位置上已经有字符,该字符的值将会被b1的值替代。如果这时b1没有值,即在执行Write动作之前没有执行过任何Read动作,那么需要提示用户相应的错误信息(ShowErrors)。
手动控制与单步控制的区别在于,单步控制时执行的是指令中的动作,只有一种控制方式,即执行下个动作;而手动控制时有4种动作。
现采用面向对象方法设计并实现该仿真系统,得到如图3-1所示的用例图和图3-2所示的初始类图。图3-2中的类“Interpreter”和“Parser”用于解析描述虚拟世界的文件以及机器人行为文件中的指令集。
【问题1】(6分)
根据说明中的描述,给出图3-1中U1~U6所对应的用例名。
【问题2】(4分)
图3-1中用例U1~U6分别与哪个(哪些)用例之间有关系,是何种关系?
【问题3】(5分)
根据说明中的描述,给出图3-2中C1~C5所对应的类名。


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

4题: 阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。
【说明】
在一块电路板的上下两端分别有n个接线柱。根据电路设计,用(i,π(i))表示将上端接线柱i与下端接线柱π(i)相连,称其为该电路板上的第i条连线。如图4-1所示的π(i)排列为{8,7,4,2,5,1,9,3,10,6}。对于任何1≤iπ(j)。
在制作电路板时,要求将这n条连线分布到若干绝缘层上,在同一层上的连线不相交。现在要确定将哪些连线安排在一层上,使得该层上有尽可能多的连线,即确定连线集Nets={(i,π(i)),1≤i≤n}的最大不相交子集。

【分析问题】
记N(i,j)={t|(t,π(t))∈Nets,t≤i,π(t)≤j}。N(i,j)的最大不相交子集为MNS(i,j),size(i,j)=|MNS(i,j)|。
经分析,该问题具有最优子结构性质。对规模为n的电路布线问题,可以构造如下递归式:

【C代码】
下面是算法的C语言实现。
(1)变量说明
size[i][j]:上下端分别有i个和j个接线柱的电路板的第一层最大不相交连接数
pi[i]:π(i),下标从1开始
(2)C程序   #include"stdlib.h"
#include
#define N   10         /*问题规模*/
Int m=0;            /*记录最大连接集合中的接线柱*/
Void maxNum(intpi[],intsize[N+1][N+1],intn){/*求最大不相交连接数*/
int i,j;
for(j=0;j for(j=pi[i];j<=n;j++)(1); /*当j>=π(1)时*/
for(i=2;i for(j=0;j for(j=pi[i];j<=n;j++) { /*当j>=c[i]时,考虑两种情况*/
size[i][j]=size[i-l][j]>=size[i-l][pi[i]-l]+1?size[i-l][j]:
size[i-l][pi[i]-l]+l;
}
}
/*最大连接数*/
size[n][n]=size[n-l][n]>=size[n-l][pi[n]-l]+1?size[n-l][n]:size[n-l][pi[n]-l]+l:
}
/*构造最大不相交连接集合,net[i]表示最大不相交子集中第i条连线的上端接线柱的序号*/
void constructSet(int pi[],int size[N+1][N+1],int n,int net[n]){
int i,j=n;
m=0;
for(i=n;i>1;i--)     {/*从后往前*/
if(size[i][j]!=size[i-l][j]){/*(i,pi[i])是最大不相交子集的一条连线*/
(3);                 /*将i记录到数组net中,连接线数自增1*/
j=pi[i]-1;             /*更新扩展连线柱区间*/
}
}
if(j>=pi[l])net[m++]=l;         /*当i=1时*/
}
【问题1】(6分)
根据以上说明和C代码,填充C代码中的空(1)~(3)。
【问题2】(6分)
根据题干说明和以上C代码,算法采用了(4)算法设计策略。
函数maxNum和constructSet的时间复杂度分别为(5)和(6)(用O表示)。
【问题3】(3分)
若连接排列为{8,7,4,2,5,1,9,3,10,6},即如图4-1所示,则最大不相交连接数为(7),包含的连线为(8)(用(i,π(i))的形式给出)。
答案解析与讨论:www.cnitpm.com/st/3816623561.html

5题: 阅读下列说明和C++代码,将应填入_(n) 处的字句写在答题纸的对应栏内。
【说明】

某软件系统中,已设计并实现了用于显示地址信息的类 Address(如图5-1所示),现要求提供基于Dtch语言的地址信息显示接口,为了实现该要求并考虑到以后可能还会出现新的语言的接口,决定采用适配器( Adapter)模式实现该要求,得到如图5.1所示的类图。

【C++代码】
#include
using namespace std;

class Address{   public:
void stree()           {/*实现代码省略*/}
void zip()             {/*实现代码省略*/}
void city()            {/*实现代码省略*/}
∥其他成员省略
};

class DutchAddress    {
public:
virtual void straat()=0;
virtual void postcode()=0;
virtual void plaats()=0;
//其他成员省略
};

class DutchAddressAdapter:public DutchAddress{
private:
(1);
public:
DutchAddressAdapter(Address*addr){
address=addr;
}
void straat()   {
(2);
}
void postcode(){
(3);
}
void plaat(){
(4);
}
//其他成员省略
};

void testDutch(DutchAddress *addr)    {
addr->straat();
addr->postcode();
addr->plaats();
}
int main()  {
Address *addr=new Address();
(5);
Cout<<"\n The DutchAddress\n"< testDutch(addrAdapter);
return 0;
答案解析与讨论:www.cnitpm.com/st/3816729460.html