閱讀以下說明和Visual Basic代碼,將應(yīng)填入 (n) 處的字句寫在答題紙的對應(yīng)欄內(nèi)。
【說明】
某繪圖系統(tǒng)定義了一個(gè)抽象類IShape,現(xiàn)有三個(gè)類CPoint、CLine和CCircle,它們都具有IShape界面。相應(yīng)的類圖關(guān)系如圖7-1所示。
已知某第三方庫已經(jīng)提供了XCircle類,且完全滿足CCircle圖元顯示時(shí)所需的功能。代碼7-1是抽象類IShape的類模塊內(nèi)容,代碼7-2實(shí)現(xiàn)了類CCircle的IShape界面,并使用了XCircle提供的顯示功能。
XCimle提供的顯示功能方法接口為displayIt。
【圖7-1】
【代碼7-1】
Public Color As Long
Sub draw()
'方法體不包括可執(zhí)行語句
End Sub
Sub move(stepx As Single,stepy As Smgle)
'方法體不包括可執(zhí)行語句
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程序,將應(yīng)填入 (n) 處的字句寫在答題紙的對應(yīng)欄內(nèi)。
【說明】
假設(shè)需要將N個(gè)任務(wù)分配給N個(gè)工人同時(shí)去完成,每個(gè)人都能承擔(dān)這N個(gè)任務(wù),
但費(fèi)用不同。下面的程序用回溯法計(jì)算總費(fèi)用最小的一種工作分配方案,在該方案中,為每個(gè)人分配1個(gè)不同的任務(wù)。
程序中,N個(gè)任務(wù)從0開始依次編號,N個(gè)工人也從0開始依次編號,主要的變量說明如下:
c[i][j]:將任務(wù)i分配給工人j的費(fèi)用;
task[i]:值為0表示任務(wù)i未分配,值為j表示任務(wù)i分配給工人j;
worker[k]:值為0表示工人k未分配任務(wù),值為1表示工人k已分配任務(wù);
mincost:最小總費(fèi)用。
【C程序】
#include<stdio.h>
#define N 8 /*N表示任務(wù)數(shù)和工人數(shù)*/
int c[N][N];
unsigned int mincost=65535; /*設(shè)置min的初始值,大于可能的總費(fèi)用*/
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++) /*分配任務(wù)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++) { /*設(shè)置每個(gè)任務(wù)由不同工人承擔(dān)時(shí)的費(fèi)用及全局?jǐn)?shù)組的初值*/
worker[i]=0;task[i]=0; temp[i]=0;
for(j=0;j<N;j++)
scanf ("%d",&c[i][j]);
}
Plan (0,0); /*從任務(wù)0開始分配*/
printf("\n最小費(fèi)用=%d\n",mincost);
for(i二0;i<N;i++)
pnntf("Task%d iB assigned toWorker%d\n",i,temp[i]);
}/*main*/
試題五
閱讀以下說明和C++代碼,將應(yīng)填入 (n) 處的字句寫在答題紙的對應(yīng)欄內(nèi)。
【說明】
某繪圖系統(tǒng)存在Point、Line、Square三種圖元,它們具有Shape接口,圖元的類圖關(guān)系如圖5-1所示?,F(xiàn)要將Circle圖元加入此繪圖系統(tǒng)以實(shí)現(xiàn)功能擴(kuò)充。已知某第三方庫已經(jīng)提供了XCircle類,且完全滿足系統(tǒng)新增的Circle圖元所需的功能,但XCircle不是由Shape派生而來,它提供的接口不能被系統(tǒng)直接使用。代碼5-1既使用了XCircle又遵循了Shape規(guī)定的接口,既避免了從頭,開發(fā)一個(gè)新的Circle類,又可以不修改繪圖系統(tǒng)中已經(jīng)定義的接口。代碼5-2根據(jù)用戶指定的參數(shù)生成特定的圖元實(shí)例,并對之進(jìn)行顯示操作。
繪圖系統(tǒng)定義的接口與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){ //生成特定類實(shí)例
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代碼,將應(yīng)填入 (n) 處的字句寫在答題紙的對應(yīng)欄內(nèi)。
【說明】
某繪圖系統(tǒng)存在Point、Line、Square三種圖元,它們具有Shape接口,圖元的類圖關(guān)系如圖6-1所示?,F(xiàn)要將Circle圖元加入此繪圖系統(tǒng)以實(shí)現(xiàn)功能擴(kuò)充。已知某第三方庫已經(jīng)提供了XCircle類,且完全滿足系統(tǒng)新增的Circle圖元所需的功能,但XCircle不是由Shape派生而來,它提供的接口不能被系統(tǒng)直接使用。代碼6-1既使用了XCircle又遵循了Shape規(guī)定的接口,既避免了從頭開發(fā)一個(gè)新的Circle類,又可以不修改繪圖系統(tǒng)中已經(jīng)定義的接口。代碼6-2根據(jù)用戶指定的參數(shù)生成特定的圖元實(shí)例,并對之進(jìn)行顯示操作。
繪圖系統(tǒng)定義的接口與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){ //生成特定類實(shí)例
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;
}
}