设计模式-软件体系结构-实验4-中南大学-软件学院(共29页).doc
《设计模式-软件体系结构-实验4-中南大学-软件学院(共29页).doc》由会员分享,可在线阅读,更多相关《设计模式-软件体系结构-实验4-中南大学-软件学院(共29页).doc(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上软件体系结构实验报告项目名称 结构型设计模式实验专业班级 学 号 姓 名 实验成绩:批阅教师:年 月 日专心-专注-专业实验4 结构型设计模式实验实验学时: 2 每组人数: 1 实验类型: 3 (1:基础性 2:综合性 3:设计性 4:研究性)实验要求: 1 (1:必修 2:选修 3:其它)实验类别: 3 (1:基础 2:专业基础 3:专业 4:其它)一、实验目的熟练使用PowerDesigner和任意一种面向对象编程语言实现几种常见的结构型设计模式,包括适配器模式、组合模式和外观模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式。二、实验
2、内容1. 现有一个接口DataOperation定义了排序方法sort(int) 和查找方法search(int, int),已知类QuickSort的quickSort(int)方法实现了快速排序算法,类BinarySearch 的binarySearch(int, int)方法实现了二分查找算法。试使用适配器模式设计一个系统,在不修改源代码的情况下将类QuickSort和类BinarySearch的方法适配到DataOperation接口中。绘制类图并编程实现。(要求实现快速排序和二分查找,使用对象适配器实现)2. Windows Media Player和RealPlayer是两种常用的
3、媒体播放器,它们的API结构和调用方法存在区别。现在你的应用程序需要支持这两种播放器API,而且在将来可能还需要支持新的媒体播放器,请问如何设计该应用程序?绘制类图并编程模拟实现。3. 使用组合模式设计一个杀毒软件(AntiVirus)的框架,该软件既可以对某个文件夹(Folder)杀毒,也可以对某个指定的文件(File)进行杀毒,文件种类包括文本文件TextFile、图片文件ImageFile、视频文件VideoFile。绘制类图并编程模拟实现。4. 某教育机构组织结构如下图所示:在该教育机构的OA系统中可以给各级办公室下发公文,试采用组合模式设计该机构的组织结构,绘制相应的类图并编程模拟实
4、现,在客户端代码中模拟下发公文。5. 某软件公司为新开发的智能手机控制与管理软件提供了一键备份功能,通过该功能可以将原本存储在手机中的通信录、短信、照片、歌曲等资料一次性全部拷贝到移动存储介质(例如MMC卡或SD卡)中。在实现过程中需要与多个已有的类进行交互,例如通讯录管理类、短信管理类等,为了降低系统的耦合度,试使用外观模式来设计并编程模拟实现该一键备份功能。 6. 某信息系统需要提供一个数据处理和报表显示模块,该模块可以读取不同类型的文件中的数据并将数据转换成XML格式,然后对数据进行统计分析,最后以报表方式来显示数据。由于该过程需要涉及到多个类,试使用外观模式设计该数据处理和报表显示模块
5、。考虑到有些文件本身已经是XML格式,无须进行格式转换,为了让系统具有更好的扩展性,在系统设计中可以引入抽象外观类。三、实验要求1. 结合实例,正确无误地绘制适配器模式、组合模式和外观模式的模式结构图;2. 使用任意一种面向对象编程语言实现适配器模式、组合模式和外观模式实例,代码运行正确无误。四、实验步骤1. 结合实例,使用PowerDesigner绘制适配器模式实例结构图并用面向对象编程语言实现该模式实例;2. 结合实例,使用PowerDesigner绘制适配器模式实例结构图并用面向对象编程语言实现该模式实例;3. 结合实例,使用PowerDesigner绘制组合模式实例结构图并用面向对象编
6、程语言实现该模式实例;4. 结合实例,使用PowerDesigner绘制组合模式实例结构图并用面向对象编程语言实现该模式实例;5. 结合实例,使用PowerDesigner绘制外观模式实例结构图并用面向对象编程语言实现该模式实例;6. 结合实例,使用PowerDesigner绘制外观模式实例结构图并用面向对象编程语言实现该模式实例。五、实验结果1. 类图:实现代码:import util.XMLUtil;public class Client public static void main(String args) DataOperation dataOperation = (DataOper
7、ation) XMLUtil.getBean();int iArray = 1,3,2,5,4;boolean result = dataOperation.search(iArray,9);for (int i = 0 ; i high) return -1; int mid = (high + low ) / 2; if (iArraymid = target) return mid; else if (iArraymid target) return bSearch(iArray, target, low, mid - 1); else return -1; public class Q
8、uickSort public void quickSort(int iArray) sort(iArray, 0, iArray.length - 1);public void sort(int arr, int low, int high) int l = low;int h = high;int povit = arrlow;while (l h) while (l = povit)h-;if (l h) int temp = arrh;arrh = arrl;arrl = temp;l+;while (l h & arrl = povit)l+;if (l low)sort(arr,
9、low, h - 1);if (h high)sort(arr, l + 1, high);package util;import java.io.File;import java.io.IOException;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Document;import org.w3c.dom.Node
10、;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;public class XMLUtil public static Object getBean () try /创建DOM文档对象DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();DocumentBuilder docBuilder = docFactory.newDocumentBuilder();Document document = docBuilder.parse(n
11、ew File(config.xml);/获取包含类名的 文本节点NodeList nl = document.getElementsByTagName(className);Node classNode = nl.item(0).getFirstChild();String className = classNode.getNodeValue();/通过类名生成实例对象并将其返回SuppressWarnings(rawtypes)Class clazz = Class.forName(className);Object obj = clazz.newInstance();return obj
12、; catch (ParserConfigurationException e) e.printStackTrace(); catch (SAXException e) e.printStackTrace(); catch (IOException e) e.printStackTrace(); catch (ClassNotFoundException e) e.printStackTrace(); catch (InstantiationException e) e.printStackTrace(); catch (IllegalAccessException e) e.printSta
13、ckTrace(); return null;DataOperationAdapter2. 类图:实现代码:import util.XMLUtil;public class Client public static void main(String args) Player player = (Player) XMLUtil.getBean();player.play();public interface Player void play();public class RealPlayerAdapter implements Player public RealPlayer realPlaye
14、r; public RealPlayerAdapter() realPlayer = new RealPlayer(); public void play() realPlayer.play(); public class RealPlayer public void play() System.out.println(RealPlayer .); public class WMPlayerAdapter implements Player public WindowsMediaPlayer windowsMediaPlayer; public WMPlayerAdapter () windo
15、wsMediaPlayer = new WindowsMediaPlayer(); public void play() windowsMediaPlayer.play(); public class WindowsMediaPlayer public void play() System.out.println(Windows Media Player.); package util;import java.io.File;import java.io.IOException;import javax.xml.parsers.DocumentBuilder;import javax.xml.
16、parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Document;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;public class XMLUtil public static Object getBean () try /创建DOM文档对象DocumentBuilderFactory docFactory =
17、DocumentBuilderFactory.newInstance();DocumentBuilder docBuilder = docFactory.newDocumentBuilder();Document document = docBuilder.parse(new File(config.xml);/获取包含类名的 文本节点NodeList nl = document.getElementsByTagName(className);Node classNode = nl.item(0).getFirstChild();String className = classNode.get
18、NodeValue();/通过类名生成实例对象并将其返回SuppressWarnings(rawtypes)Class clazz = Class.forName(className);Object obj = clazz.newInstance();return obj; catch (ParserConfigurationException e) e.printStackTrace(); catch (SAXException e) e.printStackTrace(); catch (IOException e) e.printStackTrace(); catch (ClassNot
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计 模式 软件 体系结构 实验 中南 大学 学院 29
限制150内