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

阅读下列说明和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++代码,将应...的网友还看了以下:

音标与实际读音不一致,怎么回事i:这个音标,单词sheep,∫i:p,但实际读音却与音标读音不一样 英语 2020-05-13 …

小明将易拉罐的上部剪去,蒙上半透明纸,在罐底部开一个小孔,用它做小孔成像实验如图所示,下列说法中错 其他 2020-05-14 …

显微镜目镜成像在明视距离处还是无限远处?初中物理教材上把目镜看做凸透镜,把物镜所成的实像(中间像) 物理 2020-06-12 …

请高手们帮下忙,我其他题目都做出了,在凸透镜成像时,如果把透镜的下半部用遮光板遮住,哪几种说法正确 物理 2020-06-24 …

显微镜为什么成的像是上下左右颠倒?我有点疑问,希望找个明白人解答下.显微镜物镜成实像(实像是上下左 物理 2020-07-05 …

照相机里的凸透镜可以成缩小的实像,投影仪里的凸透镜可以成放大的实像,凸透镜还能成等大的实像吗?小明 其他 2020-07-29 …

实相和虚像什么叫实际光线,什么叫反向延长线可以举生活中的例子分析说明实像和虚像 物理 2020-12-15 …

实验表明,实像总是立的,实像和物体总是分居在透镜的(填“同”或“异”)侧且实像(填“能”或“不能”) 物理 2020-12-23 …

如图所示为某一同学研究凸透镜成像的实验装置及原理图,实验现象表明实像是由会聚而成,可以用承接,实像与 物理 2020-12-23 …

如图所示,点燃的蜡烛放在距小孔a处,它成像在距小孔b的半透明纸上,且a大于b.则半透明纸上的像是() 其他 2020-12-30 …