问答题

阅读下列说明和Java代码,在 (n) 处填入适当的字句。
[说明]
现欲实现一个图像浏览系统,要求该系统能够显示BMP、JPEG和GIF三种格式的文件,并且能够在Windows和Linux两种操作系统上运行。系统首先将BMP、JPEG和GIF_种格式的文件解析为像素矩阵,然后将像素矩阵显示在屏幕上。系统需具有较好的扩展性以支持新的文件格式和操作系统。为满足上述需求并减少所需生成的子类数目,采用桥接(Bridge)设计模式进行设计所得类图如图10.21所示。

采用该设计模式的原因在于:系统解析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 imagel= (4)
ImageImp ImageImp1= (5) ;
(6)
image1.parseFile("demo.bmp");


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

【参考答案】

(1) this.imp
(2) ImageImp
(3) imp.doPaint(m)
......

(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)
热门 试题

问答题
阅读下列说明和C++代码,在 (n) 处填入适当的字句。 [说明] 现欲实现一个图像浏览系统,要求该系统能够显示BMP、JPEG和GIF三种格式的文件,并且能够在Windows和Linux两种操作系统上运行。系统首先将BMP、JPEG和GIF三种格式的文件解析为像素矩阵,然后将像素矩阵显示在屏幕上。系统需具有较好的扩展性以支持新的文件格式和操作系统。为满足上述需求并减少所需生成的子类数目,采用桥接(Bridge)设计模式进行设计所得类图如图10.20所示。 采用该设汁模式的原因在于:系统解析BMP、GIF与JPEG文件的代码仅与文件格式相关,而在屏幕上显示像素矩阵的代码则仅与操作系统相关。 [C++代码] class Matrix 各种格式的文件最终都被转化为像素矩阵 此处代码省略 ; classimageImp 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; ; class BMP : public Image public: void parseFile (string fileName) 此处解析BMP文件并获得…个像素矩阵对象m (3) ; 显示像素矩阵m ; class GIF : public Image 此处代码省略 ; class JPEG : public Image 此处代码省略 ; void main() 在Windows操作系统上查看demo.bmp图像文件 Image *image1= (4) ; ImageImp *ImageImp1= (5) ; (6) ; image1->parseFile( demo. bmp ); 现假设该系统需要支持10种格式的图像文件和5种操作系统,不考虑类Matrix,若采用桥接设计模式则至少需要设计 (7) 个类。
问答题
阅读下列说明和图,回答问题。 [说明] 某银行计划开发一个自动存提款机模拟系统(ATM System)。系统通过读卡器(CardReader)读取ATM卡;系统与客户(Customer)的交互由客户控制台(CustomerConsole)实现;银行操作员(Operator)可控制系统的启动(System Startup)和停止(System Shutdown);系统通过网络和银行系统(Bank)实现通信。 当读卡器判断用户已将ATM卡插入后,创建会话(Session)。会话开始后,读卡器进行读卡,并要求客户输入个人验证码(PIN)。系统将卡号和个人验证码信息送到银行系统进行验证。验证通过后,客户可从菜单选择如下事务(Transaction)。 (1)从ATM卡账户取款(Withdraw)。 (2)向ATM卡账户存款(Deposit)。 (3)进行转账(Transfer)。 (4)查询(Inquire)ATM卡账户信息。 一次会话可以包含多个事务,每个事务处理也会将卡号和个人验证码信息送到银行系统进行验证。若个人验证码错误,则转个人验证码错误处理(Invalid PIN Process)。每个事务完成后,客户可选择继续上述事务或退卡。选择退卡时,系统弹出ATM卡,会话结束。 系统采用面向对象方法开发,使用UML进行建模。系统的顶层用例图如图10.18所示,一次会话的序列图(不考虑验证)如图10.19所示。消息名称参见表10.6。 [问题1] 根据说明中的描述,给出图18.18中A1和A2所对应的参与者,U1~U3所对应的用例,以及该图中空(1)所对应的关系。(U1~U3的可选用例包括:Session、Transaction、Insert Card、Invalid PIN Process和OTransfer) [问题2] 根据说明中的描述,使用表10.6中的英文名称,给出图10.19中6~9对应的消息。 [问题3] 解释图10.18中用例U3和用例Withdraw、Deposit等四个用例之间的关系及其内涵。