阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】现欲实现一个图像浏览
阅读下列说明和Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
现欲实现一个图像浏览系统,要求该系统能够显示BMP、JPEG和GIF三种格式的文件,并且能够在Windows和Linux两种操作系统上运行。系统首先将BMP、JPEG和GIF三种格式的文件解析为像素矩阵,然后将像素矩阵显示在屏幕上。系统需具有较好的扩展性以支持新的文件格式和操作系统。为满足上述需求并减少所需生成的子类数目,采用桥接(Bridge)设计模式进行设计所得类图如图5—7所示。采用该设计模式的原因在于:系统解析BMP、GIF与JPEG文件的代码仅与文件格式相关,而在屏幕上显示像素矩阵的代码则仅与操作系统相关。
【Java代码】
class Matrix{//各种格式的文件最终都被转化为像素矩阵
//gt处代码省略
};
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 fiieName);
protected (2) imp;
};
class BMP extends Image{
public void parseFile(String fiieName){
//此处解析BMP文件并获得一个像素矩阵对象m(3) ;//显示像素矩阵m
}
};
classGIF extends Image{
//此处代码省略
};
class JPEG extends Image{
//此处代码省略
};
publ.ic class j avaMain{
public static v。id main (string[]args) {
//在windows操作系统上查看demO.bmp图像文件
Image imagel= (4) ;
ImageImp imageImpl= (5) ,(6鱼) ;
imagel.parseF’ile(“demo.bmp”);
}
}
现假设该系统需要支持10种格式的图像文件和5种操作系统,不考虑类Matrix和类ja.vaMain,若采用桥接设计模式则至少需要设计 (7) 个类。
(1)this.imp(2)ImageImp(3)imp.doPaint(m)(4)newBmp()(5)new WinImp()(6)imagel.setImp(imageImpl)(7) 17 解析:根据题目描述,在设计该图像显示系统时主要分为两个步骤:一是读取各种文件并将文件内容转换为像素矩阵,因为各种图片格式不同,所以需要针对每一种图片格式编写文件读取代码,而该代码与操作系统平台无关。将像素矩阵显示到屏幕上时,由于和操作系统相关,因此需要把该代码和读取文件代码相分离。设计中的Image类表示抽象的图像概念,image类中就包含了读取文件接口和设置实现平台接口:Image的子类BMP,GIF和JPEG分别负责读取各种不同格式的文件;Imagelmp的主要任务是将像素矩阵显示在屏幕上,因此,它存在两个子类,分别实现Windows系统和IJnux系统上的图像显示代码。空缺(1)处主要是设置将在哪个平台上进行实现,因此该处应该存储参数所传递的对象,由于该类的成员变量也是imp,与参数相同,因此需要填写this.imp;同理,该成员变量的类型和参数的类型应该保持相同,空(2)处应该填写Imagelmp;空(3)处需要根据imp成员变量存储的实现对象来显示图像。在空(4)处需要生成一个BMP对象;由于需要在Win.dows平台上实现,因此空(5)处需要生成一个WinImp对象,同时,还需设置该BMP对象,应采用WinImP对象来实现显示。采用桥接模式能够将文件分析代码和图像显示代码分解在不同的类层次结构中,如果不考虑中间使用的Matrix等类,那么最后需要设计的类包括两个父类,对应文件格式数目的子类,对应操作系统数目的平台类,因此10种图像格式和5种操作系统需要17个类。
在“验证凸透镜成像规律”实验中,某小组同学利用焦距为10厘米的凸透镜、高为3厘米的发光体,光屏和光 其他 2020-05-13 …
不等臂杠杆两端分别挂质量不等的两铁块,同时浸没水中不等臂杠杆,两端分别挂质量不等的两铁块,且V甲> 物理 2020-05-14 …
高一机械功的题水平传送带匀速运动,速度大小为v,现将一小工件放到传送带上.设工件初速为0,当它在传 其他 2020-05-23 …
通过三维动画软件实现浏览自然景观及展示游览路线应采用何种动画方式实现?简述动画的基本实现过 计算机类考试 2020-05-26 …
V实=V相+V牵帮我解释一下这个公式,具体一点.并说明公式中的速度是矢量还是标量V牵也是矢量吗? 物理 2020-07-11 …
如果y=根号u,u=v的平方+2,v=cosx,将y表示成x的函数 数学 2020-07-20 …
如果y=根号u,u=2+v²,v=cosx,将y表示成x的函数 数学 2020-07-20 …
气体实验定律(物理选修3-3)一段封闭的粗细均匀的玻璃管开口向下竖直插在水银槽中,管内封有一定质量的 物理 2020-11-04 …
某行星探测器绕行星飞行,设探测器运行的轨道半径为r,运动速率为v,当探测器在飞越该行星表面的质量密集 其他 2020-12-23 …
“嫦娥一号”月球探测器在环绕月球运行过程中,设探测器运行的轨道半径为r,运行速率为v,当探测器在飞越 物理 2020-12-23 …