问答题

试题六
阅读以下说明和Java 代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
[说明]
某绘图系统存在Point、Line、Square 三种图元,它们具有Shape 接口,图元的类图关系如图6-1 所示。现要将Circle 图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供了XCircle 类,且完全满足系统新增的Circle 图元所需的功能,但XCircle 不是由Shape派生而来,它提供的接口不能被系统直接使用。代码6-1 既使用了XCircle 又遵循了Shape 规定的接口,既避免了从头开发一个新的Circle 类,又可以不修改绘图系统中已经定义的接口。代码6-2 根据用户指定的参数生成特定的图元实例,并对之进行显示操作。
绘图系统定义的接口与XCircle 提供的显示接口及其功能如下表所示:


[图6-1]


 

[代码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)___getShape Instance(int tyoe){ //生成特定类实例
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 viod main (String argv[]){
if (argv.length ! =1){
System.out.println (“error parameters !”);
 Return;
 }
int type = (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;
 }
}

【参考答案】

(1) implements Shape (2) XCircle (3) Xcircle( ) (4) displayI......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题

问答题
试题四 阅读以下说明和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 #define N 8 *N表示任务数和工人数* int c[N][N]; unsigned int mincost = 65535; *设置min的初始值,大于可能的总费用* int task[N],temp[N],worker[N]; void plan(int k,unsigned int cost) {int i; if (_____(1)_____&& cost < mincost){ mincost = cost; for (I=0;I} else { for ( i = 0 ; iif ( 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 ++) Printf (“Task%d is assigned to Worker%d n”,I,temp[ i ]); } *main*