设计模式实验1报告
- 格式:doc
- 大小:90.00 KB
- 文档页数:4
实验二设计模式上机实验二一、实验目的使用PowerDesigner和任意一种面向对象编程语言实现几种常用的设计模式,加深对这些模式的理解,包括装饰模式、外观模式、代理模式、职责链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式和模板方法模式。
二、实验内容使用PowerDesigner和任意一种面向对象编程语言实现装饰模式、外观模式、代理模式、职责链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式和模板方法模式,包括根据实例绘制相应的模式结构图、编写模式实现代码,运行并测试模式实例代码。
三、实验要求1. 正确无误绘制装饰模式、外观模式、代理模式、职责链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式和模板方法模式的模式结构图;2. 使用任意一种面向对象编程语言实现装饰模式、外观模式、代理模式、职责链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式和模板方法模式,代码运行正确无误。
四、实验步骤1. 使用PowerDesigner绘制装饰模式结构图并用面向对象编程语言实现该模式;2. 使用PowerDesigner绘制外观模式结构图并用面向对象编程语言实现该模式;3. 使用PowerDesigner绘制代理模式结构图并用面向对象编程语言实现该模式;4. 使用PowerDesigner绘制职责链模式结构图并用面向对象编程语言实现该模式;5. 使用PowerDesigner绘制命令模式结构图并用面向对象编程语言实现该模式;6. 使用PowerDesigner绘制迭代器模式结构图并用面向对象编程语言实现该模式;7. 使用PowerDesigner绘制观察者模式结构图并用面向对象编程语言实现该模式;8. 使用PowerDesigner绘制状态模式结构图并用面向对象编程语言实现该模式;9. 使用PowerDesigner绘制策略模式结构图并用面向对象编程语言实现该模式;10. 使用PowerDesigner绘制模板方法模式结构图并用面向对象编程语言实现该模式。
应用4+1视图法及UML设计软件体系架构及设计模式实践一实验目的通过对实际案例进行软件设计来掌握软件体系架构模式的选择应用以及典型4+1视图软件架构设计方法的应用,并能熟练掌握如何利用Rational Rose 软件进行软件架构设计。
二实验内容(1)根据“信用卡申请件处理外包业务处理平台设计”需求选定软件体系结构模式(2)利用UML软件进行4+1视图架构设计,包括逻辑视图、开发视图、进程视图、物理视图和场景视图。
’A逻辑视图描述系统的功能需求,系统分解成一系列的功能抽象,采用时序图、协作图、类图等来表示;B开发视图描述软件在开发环境下的静态组织。
开发视图关注程序包,应用的统一框架,引用的类库、SDK和中间件,以及工程和包的划分规则等,规范、约束开发环境的结构;C进程试图侧重系统的运行特性,关注非功能性的需求(性能,可用性)。
服务于系统集成人员,方便后续性能测试。
强调并发性、分布性、集成性、鲁棒性(容错)、可扩充性、吞吐量等。
定义逻辑视图中的各个类的具体操作是在哪一个进程和线程中被执行,可以组件图为基础表示;D物理试图主要描述硬件配置。
服务于系统工程人员,解决系统的拓扑结构、系统安装、通信等问题。
主要考虑如何把软件映射到硬件上,也要考虑系统性能、规模、可靠性等。
可以与进程视图一起映射;E场景用于刻画构件之间的相互关系,将四个视图有机地联系起来。
可以描述一个特定的视图内的构件关系,也可以描述不同视图间的构件关系。
通常用Use Case图来描述。
(3)设计模式的实践,从创建者模式、结构型模式和行为模式三大类模式进行对象设计,每种类型的模式至少应用一种,并用应用了设计模式后的类设计修订逻辑视图中的类图。
三 SOA架构模式及流程分析(湛滨瑜)3.1 SOA架构介绍SOA是英文Service-Oriented Architecture,即面向服务架构的缩写。
面向服务的体系结构(service-oriented architecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。
设计模式之装饰模式实验报告第七组一、实验目的用java实现一个装饰模式,加深对装饰模式的理解。
二、实验内容在一个学校中,教师类ITeacher()具有教书方法teach()。
现需要动态给对象CTeacher ()添加J2EETeacher()方法。
使用装饰模式设计该系统,绘制类图并编程实现。
三、实验步骤实验步骤:(算法描述、源程序、操作步骤和方法)第一步:进入实验系统,创建Java 项目;第二步:按照实验指导书的内容,创建需要的各个类;第三步;编写每一个类的代码;第四步:对自己创建的Java项目进行调试;Java代码:ITeacher,javapackage ;public interface ITeacher {public void teach();}ITeacher.javapackage ;public class CTeacher implements ITeacher {ITeacher teacher;public CTeacher(){}public CTeacher(ITeacher teacher){this.teacher = teacher;}@Overridepublic void teach() {System.out.println("我能教C++");//this.teacher.teach();}}J2EETeacher.javapackage ;public class J2EETeacher implements ITeacher { ITeacher teacher;public J2EETeacher(){}public J2EETeacher(ITeacher teacher){this.teacher = teacher;}@Overridepublic void teach() {System.out.println("我能教J2EE");this.teacher.teach();}}Client.javapackage ;public class Client {public static void main(String[] args) { CTeacher c = new CTeacher();J2EETeacher cj = new J2EETeacher(c);cj.teach();}}四、运行结果五、类图。
淮海工学院计算机工程学院实验报告书
课程名:《UML理论及实践》
题目:正向工程
班级:Z计121
学号:2014140093
姓名:薛慧君
一、目的与要求
1、熟悉面向对象原则,熟悉GoF中的模式;
2、会初步使用设计模式解决实际问题;
3、掌握正向工程、逆向工程概念;
4、掌握使用Rose画出类图、交互图等来描述设计模型;
5、掌握使用Rose从设计模型使用正向工程,得到代码框架;
6、掌握使用Rose从代码使用逆向工程,得到设计模型,并文档化Project。
二、实验内容或题目
假设有一CAD系统,可能需要绘制处理若干图形(如矩形、圆形、三角形……);而画图程序有若干版本,画图的工作需要依赖于具体的机器型号,新机器可以使用新的画图程序,旧的机器只能使用老版本的程序,请使用桥模式为本系统设计一个方案:请在Rational Rose中给出设计类图,并使用正向工程生成代码框架;在生成的代码中修改后再使用逆向工程,重新生成设计模型。
三、实验步骤及结果
CAD系统设计模型的类图;
四、结果分析与实验体会
通过本次实验,我掌握了:
(1)桥模式:将抽象部分与实现部分分离,使它们都可以独立的变化。
(2)桥模式适用性:①不希望在抽象和实现部分之间有一个固定的绑架关系②类的抽象以及实现都可以通过生成子类的方法加以扩充③对抽象的实现部分的修改应不会对客户产
生影响④对客户完全隐藏抽象的实现⑤有许多类要生成⑥在多个对象间共享实现,同时对客户隐藏这种实现机制
(3)桥模式实现要点:分别定义抽象的接口和实现的接口,抽象接口中聚合一个实现接口的引用,该引用就是连接接口和实现的桥梁。
JA V A设计模式实验报告————基于外观模式的小程序学号:姓名:实验时间:2013.4.10一:实验要求设计一个子系统,该子系统有三个类:ReadFile ,AnalyzeInformation 和SaveFile ,各个子类的职责如下:ReadFile 类的实例可以读取文本文件AnalyzeInformation 类的实例可以可以从一个文本中删除用户不需要的内容, SaveFile 的实例能将一个文本保存到文本文件将上述子类设计一个外观,以便简化用户和上述子系统间进行的交互,比如,一个用户想要读取一个HTML 文件,并将文件中的全部HTML 标记去掉后保存到另一个文本文件中,那么用户只需要把需要读取的HTML 文件名,一个正则表达式,及要保存的文件名告诉系统的外观即可,外观和子系统中类的实例进行交互完成用户所指派的任务。
二:实验环境:XP 操作系统,jdk1.6实验环境,MyEclipse 软件三:实验内容 实验类图:关键代码及其注释: AnalyzeInformation : import java.util.regex.*;public class AnalyzeInformation{ public String getSavedContent(String content,String deleteContent){ //获取文件中的内容 Pattern p; Matcher m; p=pile(deleteContent); m=p.matcher(content); String savedContent=m.replaceAll(""); //将用户不需要的内容删掉(替换为“”) return savedContent; } }ReadAndWriteFacadepublic class ReadAndWriteFacade{ private ReadFile readFile; private AnalyzeInformation analyzeInformation;SubSystem ReadFile AnalyzeInformatio nSaveFileprivate WriteFile writeFile;public ReadAndWriteFacade(){readFile=new ReadFile();//读取文件analyzeInformation=new AnalyzeInformation();writeFile=new WriteFile();}punlic void doOption(String readFileName,String delContent,String savedFileName){ String content=readFile.readFileContent(readFileName);System.out.println("readfile"+readFileName+"the content is");//获取内容并显示给用户System.out.println(content);String savedContent=analyzeInformation.getSavedContent(content,delContent);writeFile.writeToFile(savedFileName,savedContent);System.out.println("save to file"+savedFileName+"the content is");System.out.print(savedContent);}}ReadFile//读取html文件中的内容import java.io.*;public class ReadFile{public String readFileContent(String filenmame){StringBuffer str=new StringBuffer;try{FileReader inOne=new FileReader(filename);BufferedReader inTwo=new BufferedReader(inOne);String s=null;while((s=inTwo.readLine())!=null){str.append(s);str.append("\n");}inOne.close();inTwo.close();}catch(IOException exp){}return new String(str);}}WriteFile//将修改后的内容保存到文本文件当中import java.io.*;public class WriteFile{public void writeToFile(String fileName,String content){StringBuffer str=new StringReader(content);try{StringReader inOne=new StringReader(content);BufferedReader inTwo=new BufferedReader(inOne);FileWriter outOne=new FileWriter(fileName);BufferedWriter outTwo=new BufferedWriter(outOne);String s=null;while((s=inTwo.radline())!=null){outTwo.write(s);outTwo.newLine();outTwo.flush();}inOne.close();//文件操作之后关闭inTwo.close();outOne.close();outTwo.close();}catch(IOException exp){}}}四:实验结果:五:系统分析:外观模式是简化用户和子系统交互的成熟模式,外观模式的关键是为子系统提供一个称作为外观的类,该外观类的实例负责和子系统当中的类进行交互。
实验一:使用S-Edit 设计基本组件符号
一、实验目的
1.掌握S-Edit 的基本操作(包括打开、另存、环境设定、绘制符号、加入组件引脚、编辑连接端口、设置输出性质、更改模块名称、新增模块等);
2.掌握基本组件符号的设计方法及流程;
3.理解两种模式:电路设计模式(Schematic Mode )和符号模式(Symbol Mode )。
二、预习要求
1.了解S-Edit 软件环境,掌握各个工具栏的作用,了解基本快捷键的操作;
2.熟悉基本的组件符号。
三、实验内容
1.创建全局符号Vdd 、Gnd ;
2.创建NMOS 和PMOS 。
两种MOS 管的栅长L 和栅宽W 均为:W=1.2m μ,L=0.6m μ;NMOS 用model=NMOS ,PMOS 用model=PMOS 。
MOS 管的性质和输出格式为:
M# ${D} ${G} ${S} ${B} ${model} L=${L} W=${W}
四、实验报告要求
实验报告包括以下内容:
1.实验名称;
2.实验设计的指标要求;
3.设计过程;
4.实验过程中出现的问题以及体会。
五、附录
1.操作流程:
建立新文件→环境设置→切换模式→绘制NMOS/PMOS 符号→加入组件引脚→更改模块名称;
新增Vdd/Gnd 模块→切换模式→绘制Vdd/Gnd 符号→加入全域引脚。
2.需要设计的电路图如下图所示。
设计模式课程设计报告通过这次课程设计使我们都更加懂得并亲身体会到了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从实践中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
以下是小编整理的设计模式课程设计报告,欢迎阅读。
设计模式课程作业要求独立制作一个软件,功能是实现23种模式的定义、优缺点以及显示示例代码。
、题目要求设计软件,将23种设计模式结合,要能够显示每种模式的定义、优缺点以及举例说明例子,加上简单的代码说明。
、主要任务主要是选择一种工具,实现显示的功能,整理各种模式的定义,概念、使用情况、以及选择模式实例,代码实现;、典型实例实现1、单例模式定义与结构单例模式的意思就是只有一个实例。
单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
这个类称为单例类。
单例模式的要点显然单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。
在下面的对象图中,有一个单例对象,而客户甲\、客户乙和客户丙\是单例对象的三个客户对象。
可以看到,所有的客户对象共享一个单例对象。
而且从单例对象到自身的连接线可以看出,单例对象持有对自己的引用。
静态变量(这是c/c++的叫法,其他语言或有不同)是实现单例模式的要素。
单例模式的2种方式:饿汉式,懒汉式单例模式属于对象创建型模式,其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点。
对一些类来说,只有一个实例是很重要的,虽然系统中可以有许多打印机,但却只应该有一个打印机假脱机,只应该有一个文件系统和一个窗口管理器,一个数字滤波器只能有一个A/D转换器,一个会计系统只能专用于一个公司。
怎样才能保证一个类只有一个实例并且这个实例易于被访问,一个全局变量使得一个对象可以被访问,但它不能防止你实例化多个对象,一个更好的方法是让类自身负责保存他的唯一实例。
实验三:适配器模式实验内容被适配的类可以把一个Calendar类型的日期按照类似于“2020年11月25日”格式输出。
现输入类似“2020.11.2”,“2020-11-2”的内容,使用对象适配器和类适配器完成按照格式的输出。
对象适配器模式UML设计图1对象适配器模式类图核心代码Target.java核心代码Adaptee.java核心代码ObjectDotAdapter.java核心代码实现效果图2对象适配器模式实现效果图类适配器模式UML设计图3类适配器模式类图核心代码Target.java核心代码Adaptee.java核心代码ClassAdapter.java核心代码实现效果图 4 类适配器模式实现效果图实验体会依赖关系是类与类之间的联接。
依赖关系表示一个类依赖于另一个类的定义。
一般而言,依赖关系在Java语言中体现为局域变量、方法的形参,或者对静态方法的调用。
关联关系是类与类之间的联接,它使一个类知道另一个类的属性和方法。
关联可以是双向的,也可以是单向的。
在Java语言中,关联关系一般使用成员变量来实现。
聚合关系是关联关系的一种,是强的关联关系。
聚合是整体和个体之间的关系。
例如,汽车类与引擎类、轮胎类,以及其它的零件类之间的关系便整体和个体的关系。
与关联关系一样,聚合关系也是通过实例变量实现的。
但是关联关系所涉及的两个类是处在同一层次上的,而在聚合关系中,两个类是处在不平等层次上的,一个代表整体,另一个代表部分。
组合关系是关联关系的一种,是比聚合关系强的关系。
它要求普通的聚合关系中代表整体的对象负责代表部分对象的生命周期,组合关系是不能共享的。
代表整体的对象需要负责保持部分对象和存活,在一些情况下将负责代表部分的对象湮灭掉。
代表整体的对象可以将代表部分的对象传递给另一个对象,由后者负责此对象的生命周期。
换言之,代表部分的对象在每一个时刻只能与一个对象发生组合关系,由后者排他地负责生命周期。