文件名称:吉林大学软件学院卓班设计模式第二次作业
文件大小:1.02MB
文件格式:RAR
更新时间:2022-11-10 14:41:53
吉林大学 设计模式
作业02 字符图像 目标:开发字符图像的类。一个字符图像是由多行ANSI可打印字符组成的,各行字符数量可以不同;一个字符图像可以通过加框(Frame)形成一个新的字符图像;两个字符图像可以通过顶端对齐的方式经水平连接(HCat)形成一个新的字符图像;两个字符图像可以通过左端对齐的方式经垂直连接(VCat)形成一个新的字符图像; 1. 现给出了一个字符图像的类定义,如下 实现上边的CharPic类。 2. 上边CharPic中,通过重载构造函数创建字符图像,但构造函数的语义不是非常直观,使用也需要特别小心。请试一试将重载的构造函数改成(简单)工厂方法,使得语义更清晰。 3. 考察完成的代码,你会发现: a) 在构造、拷贝、赋值时,会将各子图都重新构造了一遍,拷贝和赋值使用的也是深拷贝和深赋值,这样在合成复杂的字符图像过程中,子图需要频繁地复制或赋值,效率不高; b) 在使用一个字符图像对象的过程中,不会改变字符图像中的字符,因此重新构建子图、深复制、深拷贝显得没有必要; c) 合成一个新的字符图像后,新图像不会含有关于”合成过程”的信息,即新图像不知道是通过水平连接得到的,还是垂直连接得到的,也不会知道“左子图”是什么等。 为此,重新设计了CharPic(为方便对比,类名改为Pic),希望通过子类型化和共享来避免abc中的问题。类的结构图(部分)如下: 其中,由于子类型化的存在,字符图像的拷贝采用了原型方法模式 (即虚拟拷贝构造函数);同时,禁止了图像对象间的赋值。 请定义并实现上述类图中的相关类,以及用于示例的相应主程序。 4. 若已知在复用3中的类时,可能还会增加有一些其它的需求,如: a) 增加对角线连接的字符图像 b) 显示时,可通过指定图像间隔(空白字符个数)显示字符图像; c) 变更FamePic中外框的字符(如变更为$号) d) 增加以加密的形式显示字符图像功能,如将字符图像中的A显示成Z,Z显示成Y。 e) 增加图像的swap功能,即交换左右或上下(对于SimplePic和FramePic的Swap,不做操作即可) 请继续对3中的类,使用桥接模式重新设计,部分类图如下;同时指出如何适应a-e的变化需求. 5. 现有Menu类及相关类,如下图 在显示AppleMenu和WindowMenu时,是以图片的形式显示的;对于ConsoleMenu当然也以图片形式显示更一致些,但若完全实现该功能,可能会比较繁琐,可以考虑复用已有的字符图像类。为此,请分别以类适配器模式和对象适配器模式,复用字符图像类,实现ConsoleMenu的show功能。
【文件预览】:
作业02
----T05()
--------T05.sln(1KB)
--------T05()
----作业02.docx(201KB)
----T02()
--------T02()
--------T02.sln(1KB)
----T04()
--------T04.sln(1KB)
--------Debug()
--------T04()
----T03()
--------Debug()
--------T03.sln(1KB)
--------T03()
----T01()
--------T01.sln(1KB)
--------T01()