问答题
试题七 (共 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)