问答题

试题七 (共 15 分 )   阅读下列说明和Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。   【说明】   现欲实现一个图像浏览系统,要求该系统能够显示BMP、JPEG 和GIF三种格式的文件,并且能够在Windows和Linux两种操作系统上运行。系统首先将BMP、JPEG 和GIF三种格式的文件解析为像素矩阵,然后将像素矩阵显示在屏幕上。系统需具有较好的扩展性以支持新的文件格式和操作系统。为满足上述需求并减少所需生成的子类数目,采用桥接(Bridge)设计模式进行设计所得类图如图7-1所示。
  采用该设计模式的原因在于:系统解析BMP、GIF与JPEG文件的代码仅与文件格式相关,而在屏幕上显示像素矩阵的代码则仅与操作系统相关。   【Java 代码】   class Matrix{ //各种格式的文件最终都被转化为像素矩阵   //此处代码省略   };   abstract class ImageImp{   public abstract void doPaint(Matrix m); //显示像素矩阵m   };   class WinImp extends ImageImp{   public void doPaint(Matrix m){ /*调用windows系统的绘制函数绘制像素矩阵*/ }   };   class LinuxImp extends ImageImp{   public void doPaint(Matrix m){/*调用Linux系统的绘制函数绘制像素矩阵*/}   };   abstract class Image {   public void setImp(ImageImp imp){   (1) = imp; }   public abstract void parseFile(String fileName);   protected (2) imp;   };   class BMP extends Image{   public void parseFile(String fileName){   //此处解析BMP文件并获得一个像素矩阵对象m   (3) ;// 显示像素矩阵m   }   };   class GIF extends Image{   //此处代码省略   };   class JPEG extends Image{   //此处代码省略   };   public class javaMain{   public static void main(String[] args){   //在windows操作系统上查看demo.bmp图像文件   Image image1 = (4) ;   ImageImp imageImp1 = (5) ;   (6) ;   image1.parseFile("demo.bmp");   }   }   现假设该系统需要支持 10 种格式的图像文件和 5 种操作系统,不考虑类 Matrix 和类javaMain,若采用桥接设计模式则至少需要设计(7)个类。

【参考答案】


热门 试题

问答题
【问题 1】(12 分)本题采用Floyd-Warshall算法求解任意两个顶点之间的最短路径。 已知图G的顶点集合为V= {1,2,...,n } ,W= {Wij}n*n 为权重矩阵。设 d (k)ij=为从顶点i到顶点j的一条最短路径的权重。当k = 0时,不存在中间顶点,因此d(0)ij=wij当k >0 时,该最短路径上所有的中间顶点均属于集合 {1,2, ..., k}若中间顶点包括顶点 k ,则d(k)ij=d(k-1)ik+d(k-1)kj若中间顶点不包括顶点k ,则d(k-1)ij=d(k-1)ij于是得到如下递归式。因为对于任意路径,所有的中间顶点都在集合{1,2, ..., n} 内,因此矩阵D(n) ={d(n)ij}n*n 给出了任意两个顶点之间的最短路径,即对所有i, j ∈V,d(n)ij表示顶点i到顶点 j的最短路径。 下面是求解该问题的伪代码,请填充其中空缺的 (1)至(6)处。 伪代码中的主要变量说明如下:W:权重矩阵n: 图的顶点个数SP:最短路径权重之和数组,SP[i]表示顶点i到其它各顶点的最短路径权重之和,i从1到nmin_SP:最小的最短路径权重之和min_v:具有最小的最短路径权重之和的顶点i:循环控制变量j:循环控制变量k:循环控制变量LOCATE -SHOPPINGMALL(W, n)1 D(0)=W2 for (1) 3 for i = 1 to n4 for j = 1 to n5 if d(k-1)ij≤≤d(k-1)ik+d(k-1)kj6 (2) 7 else8 (3) 9 for i = 1 to n10 SP[i] = 011 for j = 1 to n12 (4) 13 min_SP = SP[1]14 (5) 15 for i = 2 to n16 if min_SP > SP[i]17 min_SP = SP[i]18 min_v = i19 return (6)