呵呵,试试,给点分hcat1999

zdg 2000-05-17 05:46:00
...全文
135 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zdg 2000-05-17
  • 打赏
  • 举报
回复
tst
zdg 2000-05-17
  • 打赏
  • 举报
回复
txt
zdg 2000-05-17
  • 打赏
  • 举报
回复
tst
hcat1999 2000-05-17
  • 打赏
  • 举报
回复
好,给吧
作业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功能。

543

社区成员

发帖
与我相关
我的任务
社区描述
客服专区
其他 技术论坛(原bbs)
社区管理员
  • 客服专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧