练习03 创建型+结构型+其它(以step0_src中代码为基础) 1. 在代码中大量地使用了cout, 这限定了程序只能输出到控制台屏幕,同时也限定了程序中大部分类只能在控制台程序中被复用。为更好提高Menu等类的复用性,并适应多种输出设备,如输出到流设备(含控制台)、输出到打印机、输出到窗口等, 可以将输出独立出来。请根据给出的类图,设计并实现相关类(PrinterDevice、WindowDevice不用实现,暂不考虑cin的处理),并修改原程序,使得输出结果不变。 2. 若希望输出各菜单时,左端都增加一些空格或Tab,使得显示更美观一些,如下图所示。请使用装饰模式扩展1中的类。 转变成 3. 考虑1中的PrinterDevice,若系统中没有本地打印机,而是使用网络打印机;在网络上打印机有多台,当有打印需要时,由系统根据情况选择一台打印。现希望维持OutDevice等类接口的一致,同时让用户在适应打印设备时,感觉与本地打印“一样”。请使用代理模式,给出相关部分的类图并简要加以说明。 4. 现希望在Process各Menu时,增加一些额外的操作:如在菜单之前显示一个Head,例如主菜单可能显示为: ========================= = = ========================= 主菜单 1: New 2: Load 3: Save 4: Option 5: Play..." 6: Change To EF 0: Exit Your selected: 也可能在菜单显示时,循环播放背景音乐,离开菜单时,停止播放。 现将Menu中的Process改为virtual,通过复用已有的各Menu,给Menu增加一些额外的功能。请使用装饰模式进行扩展,使得Process各Menu时,都循环播放背景音乐,离开菜单时,停止播放;同时显示主菜单时,显示如上图(Window下可使用PlaySound API函数,另由于LoadMenu类名与Windows中的LoadMenu API函数重名,可将菜单LoadMenu 类改为其它名字或使用名字空间避免重名)。 5. 现添加Player。作为Demo,可设为2-3个player,如第1号是HumanPlayer;第2号玩家是AutoPlayer,第3号玩家是AutoPlayer。当选择MainMenu->Play时,各Player依次Play;轮到AutoPlayer时,显示当前Map,然后转下一个player;轮到HumanPlayer时,显示PlayMenu菜单,如下: PlayMenu 1. Go… 2. Load 3. Save 4. Back To MainMenu Your selected: 选择1时,显示当前Map; 选择2时,进入LoadMenu;选择3时,进入SaveMenu (SaveMenu可从MainMenu的子菜单中移除掉);选择4时,进入MainMenu。请完成实现代码。实现时,需将MainMenu的子菜单SaveMenu移到PlayMenu的子菜单;修改LoadMenu的动作,当返回时,不再返回到MainMenu,而是直接执行MainMenu的Play过程;
2021-10-09 11:40:08 2.04MB 吉林大学 设计模式
1
练习02 创建型+结构型+其它(以fromsrc目录中的代码为基础) 1. 在game中维护着curMenu,见下图: 在运行时,应只有一个curMenu对象。而MenuMgr作为所有menu的管理器,也可以管理curMenu。请将curMenu从Game类,移到MenuMgr中,使得运行结果不变。 2. 道理同1. 请建立MapMgr类,并将curMap从Game类,移到MapMgr中,使得运行结果不变。 3. 查看Map.h 其中各Block以二维数组的形式组织。事实上,各Block的组织形式是多种多样的,如 既可以用二维数组的形式表示布局结构,也可以用链表、有向图等表示,甚至各Block是通过立体的关系构成Map。请使用桥接模式分离Map的接口和具体实现。同时,为保持Map接口的一般性,改为通过线性索引的方式读取/添加Block。即Map可如下: MapImp类可如下:(当需要不同的实现时,从MapImp派生即可) 既然Map不再记录Block的二维位置信息,那么可以让Block记录自己的二维位置信息,即Block类可修改为: 请完成相关代码的修改,使得程序功能不变。 4. 前边的代码中,地图的布局是由二维数组给出的,如: 很明显,其隐含地指出:相邻的两个非空Block是相通的,不相邻两个非空Block是不能直接连通的。但实际上,地图的布局不一定以数组形式给出,可以用其它方式给出,例如下图(地图B)中的布局,可能以下表的形式给出: (地图B的布局含义) A A A A A B B B C C C C D D D A A A A A B B B (对应地图B布局实际给出的数据表) 类型 序号 行 列 LEFT RIGHT UP DOWN A 1 0 0 0 2 0 6 A 2 0 1 1 3 0 0 A 3 0 2 2 4 0 7 A 4 0 3 3 5 0 0 A 5 0 4 4 0 0 8 B 6 1 0 0 0 1 9 B 7 1 2 0 0 3 10 B 8 1 4 0 0 5 12 C 9 2 0 0 0 6 13 C 10 2 2 0 11 7 14 C 11 2 3 10 12 0 0 C 12 2 4 11 0 8 15 D 13 3 0 0 0 9 16 D 14 3 2 0 0 10 18 D 15 3 4 0 0 12 20 A 16 4 0 0 17 13 0 A 17 4 1 16 18 0 0 A 18 4 2 17 19 14 0 A 19 4 3 18 20 0 0 A 20 4 4 19 21 15 0 B 21 4 5 20 22 0 0 B 22 4 6 21 23 0 0 B 23 4 7 22 0 0 0 若希望每个Block“知道”其相邻的各Block,请扩展3中MapDirector、MapBuilder、Block类,同时改写MapMgr中的createMap函数,使得新的程序能够根据给定数据表正确创建并显示地图(可在global.h中添加常量)。 5. 回看3中的MapImp类: 请问“MapImp类的设计中,使用了适配器模式”,这句话对吗?如果正确,回答适配了什么?采用类适配器模式可以吗?如果不正确,回答为什么?
2021-10-09 11:37:03 632KB 吉林大学 设计模式
1
《大富翁》游戏的初步类图可如下: 其中菜单系统中各菜单可能如下: 请用面向对象语言和方法,编写一个控制台程序,主要实现菜单系统的Demo。 (语言C++/Java均可,暂不用考虑异常处理,默认2个玩家,音量50,分辨率1024*768) main函数如下(例:C++): int main() { Game * game= new Game; game->init(); game->run(); game->term(); delete game; return 0; }
2021-10-09 11:34:24 935KB 吉林大学
1
吉林大学软件学院卓班设计模式第一次作业 一. 使用分类稳定和变化的方法,重新设计类,使得新设计能以扩展代码的方式适应变化 未来可能会增加新的数据成员如mVal3, do1和do2中可能访问mVal1、mVal2、mVal3等 二. 按指定的要求或模式,给出实现。 1. 使用工厂方法模式实现工厂类。其中图书馆可能增加其他子类型,体育馆可可能增加具体子类。 2. 请用C++语言具体实现多线程中lazy式的单例模式(具体的锁机制,可任意)。 3. 若已知文科图书馆和理科图书馆各只有唯一一个,请参考课件中”多个单例类”,实现文科图书馆和理科图书馆的单例化。 4. 显然,一套场所组合对应一个工厂,请实现将各工厂也单例化。 5. 一个线程对象可以是多种状态(运行,空闲,挂起等),创建线程是非常耗资源的。线程池可以较好地避免频繁创建线程:一个线程池可以聚合N个线程(线程初始状态为空闲,N=10)。当客户申请线程时,从线程池中查找空闲的线程,找到后返回该线程;若没找到,返回异常。请用多例模式设计线程池类(ThreadPool)
2021-10-09 11:29:45 56KB 吉林大学
1
吉林大学计算机网络知识点整理和往年题.zip
2021-10-06 13:04:51 39.97MB ppt
1
吉林大学研究生《网格计算》课件
2021-10-04 21:20:32 10.88MB 吉林大学 网格计算
1
敏捷开发在软件工程领域的发展和实践研究 吉林大学软件学院 摘要:随着互联网行业的不断发展,如何通过改进软件项目开发的过程管理来提高近些年的软件企业软件的开发效率、满足频繁需求变更是目前大部分互联网企业困扰的难题。本文首先对国内外目前常用的几种研发模式进行介绍,然后针对敏捷软件开发方法的开发、维护和管理模式的运用特点进行分析,比较了传统开发方法和敏捷开发方法的异同点,接下来结合极限编程和敏捷维护模型在保险信息系统中的应用,对敏捷开发的实践方法展开研究,最后分析了敏捷开发方法的实践和应用前景。 关键词:敏捷开发;互联网企业;敏捷维护模型;极限编程
2021-09-30 00:29:59 7.92MB 吉林大学 软件工程
1
吉林大学软件学院计算机组成原理的常考题型及每章知识点总结
1
压缩包里面是2017级软件学院数据结构的实验源代码,做实验时可以参考一下,即使题型有变,本质都差不太多。
1
2018级吉林大学软件学院上机实验题,本人真实通过代码,童叟无欺。有需要值得参见!!!!!绝不吃亏!!!!
1