早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->软考中级 -->

阅读下列说明和c++代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】现欲实现一个图像浏览系

题目

阅读下列说明和c++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。

【说明】

现欲实现一个图像浏览系统,要求该系统能够显示BMP、JPEG和GIF三种格式的文件,并且能够在Windows和Linux两种操作系统上运行。系统首先将BMP、JPEG和GIF三种格式的文件解析为像素矩阵,然后将像素矩阵显示在屏幕上。系统需具有较好的扩展性以支持新的文件格式和操作系统。为满足上述需求并减少所需生成的子类数目,采用桥接(Bridge)设计模式进行设计所得类图如图5—6所示。

采用该设计模式的原因在于:系统解析BMP、GIF与JPEG文件的代码仅与文件格式相关,而在屏幕上显示像素矩阵的代码则仅与操作系统相关。

【c++代码】

class Matrix{//各种格式的文件最终都被转化为像素矩阵

//st处代码省略

};

class ImageImp{

public:

virtual void doPaint(Matrix m)=0; //显示像素矩阵m

};

class WinImp:public ImageImp{

public:

void doPaint(Matrix m){/*调用windows系统的绘制函数绘制像素矩阵*/)

);

class LinuxImp:public ImageImp{

public:

void doPaint(Matrix m){/*调用Linux系统的绘制函数绘制像素矩阵*/)

};

class Image{

public;

void setImp(ImageImp*imp){ (1) =imp;)

virtual void parseFile(string fileName)=0 ;

protected:(2) *imp;

};

classBMP:public Image{

public:

void parseFile(string fileName){

//此处解析BMP文件并获得一个像素矩阵对象m(3) ;//显示像素矩阵m

};

classGIF:public Image{

//此处代码省略

};

classJPEG:public Image(

//gh处代码省略

};

void main(){

//在windows操作系统上查看demo.bmp图像文件

Image*imagel= (4) ;

ImageImp*imageImpl= (5) ;(6) ;

imagel->parseFile(“demo.bmp”);

}

现假设该系统需要支持10种格式的图像文件和5种操作系统,不考虑类Matrix,若采用桥接设计模式则至少需要设计 (7) 个类。

参考答案
正确答案:(1)this->imp(2)Imagelmp(3)imp->doPaint(m)(4)newBMP()(5)new WinImp()(6)imagel->setImp(imageImpl)(7) 17
(1)this->imp(2)Imagelmp(3)imp->doPaint(m)(4)newBMP()(5)new WinImp()(6)imagel->setImp(imageImpl)(7) 17 解析:根据题目描述,在设计该图像显示系统时主要分为两个步骤:一是读取各种文件并将文件内容转换成像素矩阵,因为各种图片格式不同,因此需要针对每一种图片格式编写文件读取代码,而该代码与操作系统平台无关。将像素矩阵显示到屏幕上时,由于和操作系统相关,因此需要把该代码和读取文件代码相分离。设计巾的Image类表示抽象的图像概念Image类中就包含了读取文件接口和设置实现平台接口。Image的子类BMP、GIP和IPEG分别负责读取各种不同格式的文件;ImageImp的主要任务是将像素矩阵显示在屏幕上,因此,它存在两个子类,分别实现Windows系统和L,inux系统上的图像显示代码。空缺(1)处主要是设置将在哪个平台上进行实现,因此该处应该存储参数所传递的对象,由于该类的、成员变量也是imp,与参数相同,因此需要填写this—wimp,同理,该成员变量的类和参数的类M应该保持相同。空(2)处应该填写Imagelmp,空(3)处需要根据imp成员变量存储的实现对象来显示图像;在空(4)处需要生成一个BMP对象;由于需要在Windows平台上实现,因此空(5)处需要生成一个winImp对象,同时,还需设置该BMlP对象,应采用winImp对象来实现显示。采用桥接模式能够将文件分析代码和图像显示代码分解在不同的类层次结构中,如果不考虑中间使用的Matrix等类,那么最后需要设计的类包括两个父类,对应文件格式子类,对应操作系统平台类,因此10种图像格式和5种操作系统需要17个类。
看了阅读下列说明和c++代码,将应...的网友还看了以下:

生活中常用“码”作鞋子的长度单位,观察下表回答问题中国码3738394041厘米23.52424. 其他 2020-04-07 …

某同学用弹簧测力计和钩码探究物重与质量的关系.下表是该同学实验时测得的数据,请你认真阅读.计算物重 物理 2020-05-15 …

按明文的处理方法,密码可分为()。A.置换密码和易位密码B.分组密码和序列密码C.对称密码体制和非对 计算机类考试 2020-05-23 …

古典密码包括代替密码和置换密码两种,对称密码体制和非对称密码体制都属于现代密码体制。传统的 计算机类考试 2020-05-26 …

按照密码系统对明文的处理方法,密码系统可以分为()。A.对称密码系统和公钥密码系统B.对称密码系统 计算机类考试 2020-05-26 …

二进制码0001转换成移码的问题?对于n+1位二进制整数X=X0X1...Xn,移码定义为:[x] 数学 2020-07-08 …

如图是我们熟悉的二维码的图片,手机扫描二维码的原理是:手机扫描二维码,相当于给二维码拍一张照片,识 物理 2020-07-19 …

将正整数按如图所示排列,用有序数对对(n,m)表示n牌,左到右排列第m个数,如(4,4)表示10图: 数学 2020-10-30 …

破译密码.下面是一张密码图,其中隐藏着一句话,先按照数对在密码图中找出相对应的字母,依次写在横线上就 其他 2020-11-23 …

物重与质量(1)计算物重与质量的比值,并填入表中;在图2方格纸中作出关于G与m的关系图象.研究对象钩 其他 2020-12-31 …