设计模式实验1报告

合集下载

java设计模式实验报告

java设计模式实验报告

实验二设计模式上机实验二一、实验目的使用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)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。

实验2设计模式实验一.

实验2设计模式实验一.
《软件体系结构》
实验报告
项目名称
专业班级
学号
姓名实Leabharlann 成绩:批阅教师:年月日
实验2设计模式实验一
实验学时:4
每组人数:1
实验类型:3(1:基础性2:综合性3:设计性4:研究性)
实验要求:1(1:必修2:选修3:其它)
实验类别:3(1:基础2:专业基础3:专业4:其它)
一、实验目的
1.熟练使用面向对象设计原则对系统进行重构;
10.某信息系统需要提供一个数据处理和报表显示模块,该模块可以读取不同类型的文件中的数据并将数据转换成XML格式,然后对数据进行统计分析,最后以报表方式来显示数据。由于该过程需要涉及到多个类,试使用外观模式设计该数据处理和报表显示模块。考虑到有些文件本身已经是XML格式,无须进行格式转换,为了让系统具有更好的扩展性,在系统设计中可以引入抽象外观类。
(注:用C#或C++实现类似功能也可以)
7.现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[], int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法,类BinarySearch的binarySearch(int[], int)方法实现了二分查找算法。试使用适配器模式设计一个系统,在不修改源代码的情况下将类QuickSort和类BinarySearch的方法适配到DataOperation接口中。绘制类图并编程实现。(要求实现快速排序和二分查找,使用对象适配器实现)
2.熟练使用PowerDesigner和任意一种面向对象编程语言实现几种常见的创建型设计模式,包括简单工厂模式、工厂方法模式、抽象工厂模式、单例模式、适配器模式、组合模式、外观模式和代理模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式。

设计模式实验报告之装饰模式

设计模式实验报告之装饰模式

设计模式之装饰模式实验报告第七组一、实验目的用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实验报告书实验3-设计模式

UML实验报告书实验3-设计模式

淮海工学院计算机工程学院实验报告书
课程名:《UML理论及实践》
题目:正向工程
班级:Z计121
学号:2014140093
姓名:薛慧君
一、目的与要求
1、熟悉面向对象原则,熟悉GoF中的模式;
2、会初步使用设计模式解决实际问题;
3、掌握正向工程、逆向工程概念;
4、掌握使用Rose画出类图、交互图等来描述设计模型;
5、掌握使用Rose从设计模型使用正向工程,得到代码框架;
6、掌握使用Rose从代码使用逆向工程,得到设计模型,并文档化Project。

二、实验内容或题目
假设有一CAD系统,可能需要绘制处理若干图形(如矩形、圆形、三角形……);而画图程序有若干版本,画图的工作需要依赖于具体的机器型号,新机器可以使用新的画图程序,旧的机器只能使用老版本的程序,请使用桥模式为本系统设计一个方案:请在Rational Rose中给出设计类图,并使用正向工程生成代码框架;在生成的代码中修改后再使用逆向工程,重新生成设计模型。

三、实验步骤及结果
CAD系统设计模型的类图;
四、结果分析与实验体会
通过本次实验,我掌握了:
(1)桥模式:将抽象部分与实现部分分离,使它们都可以独立的变化。

(2)桥模式适用性:①不希望在抽象和实现部分之间有一个固定的绑架关系②类的抽象以及实现都可以通过生成子类的方法加以扩充③对抽象的实现部分的修改应不会对客户产
生影响④对客户完全隐藏抽象的实现⑤有许多类要生成⑥在多个对象间共享实现,同时对客户隐藏这种实现机制
(3)桥模式实现要点:分别定义抽象的接口和实现的接口,抽象接口中聚合一个实现接口的引用,该引用就是连接接口和实现的桥梁。

软件设计模式与体系结构实验报告

软件设计模式与体系结构实验报告

HotelGUI
-mdtr TourMediator
+reserveRoom() +checkIn() +checkOut() +notifyAirline() +notifyTour() +display()
AirlineGUI
-mdtr TourMeБайду номын сангаасiator
+reserveRoom() +checkIn() +checkOut() +notifyAirline() +notifyTour() +display()
iDText = new JTextField(20); nationality = new JComboBox(); nationality.addItem("China");
nationality.addItem( "USA"); nationality.addItem("England"); nationality.addItem( "France"); nationality.addItem("Germany"); nationality.addItem( "Russia"); nationality.addItem("Japan"); nationality.addItem( "Korea"); lblName = new JLabel("Customer Name:"); lblID = new JLabel("Customer ID:"); nation = new JLabel("Nationality:"); //Create the open button JButton submitBtn = new JButton(SUBMIT); submitBtn.setMnemonic(KeyEvent.VK_S); JButton exitButton = new JButton(EXIT); exitButton.setMnemonic(KeyEvent.VK_X); ButtonListener btnListener = new ButtonListener(); // add action Listener submitBtn.addActionListener(btnListener); exitButton.addActionListener(btnListener); btnPanel = new JPanel(); //-----------------------------------------------GridBagLayout gridbag = new GridBagLayout(); btnPanel.setLayout(gridbag); GridBagConstraints gbc = new GridBagConstraints(); btnPanel.add(lblName);

外观模式实验报告

外观模式实验报告

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设计基本组件符号

实验一:使用S-Edit设计基本组件符号

实验一:使用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.需要设计的电路图如下图所示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
现需要根据面向对象设计原则对系统进行重构,画类图。需求如下:
隔离图形的创建和使用,将图形的创建过程封装在专门的类中,客户类在使用时无须直接创建图形对象,甚至不需要关心具体图形类类名。
客户类能够方便地更换图形或使用新增图形,无须针对具体图形类编程,符合开闭原则。
3、体育老师让体委清点全班女生人数,类图如下:
开闭原则:一个软件实体应当对扩展开放,对修改关闭。
(二)实验内容:
1、在某图形界面中存在代码片段(1.txt文件中),组件类之间相互产生较为复杂的引用关系。如果在上述系统中增加一个新的组件类,则必须修改与之交互的其他组件类的源代码,将会导致多个类的源代码需要修改。现根据迪米特法则对上述代码进行重构,以降低组件之间的耦合度。注:方法体可以省略不写。
实验报告
系别
班级
学号
姓名
时间
地点
计科
13:40-15:20
实验楼C106
课程名称
验目的与要求
1、熟练使用面向对象设计原则
二.实验设备
微型计算机
三.实验原理和实验内容
(一)实验原理:
迪米特法则定义:不要和“陌生人”说话。或只与你的直接朋友通信。其中,我们称出现成员变量、方法参数、方法返回值中的类为直接的朋友,而出现在局部变量中的类则不是直接的朋友。也就是说,陌生的类最好不要作为局部变量的形式出现在类的内部。
客户类(Client)在使用该图形库时发现存在如下问题:
由于在创建窗口时每次只需要使用图形库中的一种图形,因此在更换图形时需要修改客户类源代码;
在图形库中增加并使用新的图形时需要修改客户类源代码;
客户类在每次使用图形对象之前需要先创建图形对象,有些图形的创建过程较为复杂,导致客户类代码冗长且难以维护。
2、某图形库API中提供了多种矢量图模板,用户可以基于这些矢量图创建不同的显示图形,图形库设计人员设计的初始类图如图所示。
在该图形库中,每个图形类的init()方法用于初始化所创建的图形,setColor()方法用于给图形设置边框颜色,fill()方法用于给图形设置填充颜色,setSize()方法用于设置图形的大小,display()方法用于显示图形。
代码如下:
老师不应该执行任何与女学生相关的操作,显然违反了迪米特法则。重新设计类图,编码实现,符合迪米塔法则。
四.实验结果
1.类图:
2.代码:
3.类图、代码:
五.实验总结
相关文档
最新文档