阅读以下说明和Visual Basic代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
某绘图系统定义了一个抽象类IShape,现有三个类CPoint、CLine和CCircle,它们都具有IShape界面。相应的类图关系如图7-1所示。
已知某第三方库已经提供了XCircle类,且完全满足CCircle图元显示时所需的功能。代码7-1是抽象类IShape的类模块内容,代码7-2实现了类CCircle的IShape界面,并使用了XCircle提供的显示功能。
XCimle提供的显示功能方法接口为displayIt。
【图7-1】
【代码7-1】
Public Color As Long
Sub draw()
'方法体不包括可执行语句
End Sub
Sub move(stepx As Single,stepy As Smgle)
'方法体不包括可执行语句
End Sub
【代码7-2】
(1)
Private color As Long
… ‘其他定义省略
Private bridged As (2)
Private Sub Class_Initialize ( )
Set bridged= (3)
End Sub
Private Property (4) ( )As Long
IShape_Color = color
End Property
Private Property (5) (ByVal newColor As Long)
color=newColor
End Property
Private Sub IShape_draw ( ) '使用XCirele提供的显示功能
(6)
End Sub
Private Sub IShape_move (stepx As Single, stepy As Single)
… '省略描述
End Sub
试题四
阅读以下说明和C程序,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
假设需要将N个任务分配给N个工人同时去完成,每个人都能承担这N个任务,
但费用不同。下面的程序用回溯法计算总费用最小的一种工作分配方案,在该方案中,为每个人分配1个不同的任务。
程序中,N个任务从0开始依次编号,N个工人也从0开始依次编号,主要的变量说明如下:
c[i][j]:将任务i分配给工人j的费用;
task[i]:值为0表示任务i未分配,值为j表示任务i分配给工人j;
worker[k]:值为0表示工人k未分配任务,值为1表示工人k已分配任务;
mincost:最小总费用。
【C程序】
#include<stdio.h>
#define N 8 /*N表示任务数和工人数*/
int c[N][N];
unsigned int mincost=65535; /*设置min的初始值,大于可能的总费用*/
int task[N],temp[N],workerIN];
void Plan(int k,unsigned Int cost)
{ int i;
if ( (1) &&cost<mincost){
mincost=cost;
for (i=0;i<N;i++) temp[i]:task[i];
}
else{
for(i=0;i<N;i++) /*分配任务k*/
if (worker[i]=0&& (2) ){
worker[i]=1; task[k]= (3) ;
Plan( (4) ,cost+c[k][i]);
(5) ; task[k]=0;
}/*if*/
}
}/*Plan*/
void main()
{int i,j;
for (i=0;i<N;i++) { /*设置每个任务由不同工人承担时的费用及全局数组的初值*/
worker[i]=0;task[i]=0; temp[i]=0;
for(j=0;j<N;j++)
scanf ("%d",&c[i][j]);
}
Plan (0,0); /*从任务0开始分配*/
printf("\n最小费用=%d\n",mincost);
for(i二0;i<N;i++)
pnntf("Task%d iB assigned toWorker%d\n",i,temp[i]);
}/*main*/
试题五
阅读以下说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
某绘图系统存在Point、Line、Square三种图元,它们具有Shape接口,图元的类图关系如图5-1所示。现要将Circle图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供了XCircle类,且完全满足系统新增的Circle图元所需的功能,但XCircle不是由Shape派生而来,它提供的接口不能被系统直接使用。代码5-1既使用了XCircle又遵循了Shape规定的接口,既避免了从头,开发一个新的Circle类,又可以不修改绘图系统中已经定义的接口。代码5-2根据用户指定的参数生成特定的图元实例,并对之进行显示操作。
绘图系统定义的接口与XCircle提供的显示接口及其功能如下表所示:
【代码5-1】
class Circle:public (1) {
pfivme:
(2) m_circle;
public:
void display(){
m_circle. (3) ;
}
};
【代码5-2】
class Factory{
public:
(4) getShapeInstance (int type){ //生成特定类实例
switch (type){
case 0:rcturn new Point;
Case l:return new Rectangle;
case 2: return new Line;
case 3: return new Circle;
default: return NULL;
} void main (int argo, char *argv[]) {
if (argc!=2) {
cout << "error parameters !" << endl; return; inttype=atoi (argv[1]) ;
Factory factory;
Shape *s;
s = factory. (5) :
if (s==NULL) {
cout << "Error get the instance !" << endl;
return;
}
s->display () ;
(6) ;
return;
试题六
阅读以下说明和Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
某绘图系统存在Point、Line、Square三种图元,它们具有Shape接口,图元的类图关系如图6-1所示。现要将Circle图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供了XCircle类,且完全满足系统新增的Circle图元所需的功能,但XCircle不是由Shape派生而来,它提供的接口不能被系统直接使用。代码6-1既使用了XCircle又遵循了Shape规定的接口,既避免了从头开发一个新的Circle类,又可以不修改绘图系统中已经定义的接口。代码6-2根据用户指定的参数生成特定的图元实例,并对之进行显示操作。
绘图系统定义的接口与XCircle提供的显示接口及其功能如下表所示:
【代码6-1】
class Circle (1) {
private (2) pxc;
public Circle(){pxc=new (3) ;
}
public void display(){
pxc. (4) ;
}
}
【代码6-2】
public class Factory{
public (5) getShapeInstance(int type){ //生成特定类实例
switch(type){
case 0: return new Point ( );
case 1: return new Rectangle ( ) ;
case 2: return new Line ( ) ;
case 3: return new Circle ( ) ;
default: return null;
}
}
public class App{
public static void main (String argv[] )
if (argv. length != l) {
System. out.println ("error parameters !");
return;
}
inttype= (new Integer (argv[0])) .intValue (
Factory factory = new Factory ( ) ;
Shape s;
s=factory, (6)
if (s==null) {
System.out.println ( "Error get instance !" )
return;
}
s.display () ;
return;
}
}