精品实验报告软件体系结构设计模式实验报告.docx

上传人:b****6 文档编号:8532370 上传时间:2023-01-31 格式:DOCX 页数:13 大小:392.56KB
下载 相关 举报
精品实验报告软件体系结构设计模式实验报告.docx_第1页
第1页 / 共13页
精品实验报告软件体系结构设计模式实验报告.docx_第2页
第2页 / 共13页
精品实验报告软件体系结构设计模式实验报告.docx_第3页
第3页 / 共13页
精品实验报告软件体系结构设计模式实验报告.docx_第4页
第4页 / 共13页
精品实验报告软件体系结构设计模式实验报告.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

精品实验报告软件体系结构设计模式实验报告.docx

《精品实验报告软件体系结构设计模式实验报告.docx》由会员分享,可在线阅读,更多相关《精品实验报告软件体系结构设计模式实验报告.docx(13页珍藏版)》请在冰豆网上搜索。

精品实验报告软件体系结构设计模式实验报告.docx

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

【精品实验报告】软件体系结构设计模式实验报告

软件体系结构

设计模式实验报告

学生姓名:

所在学院:

学生学号:

学生班级:

指导老师:

完成日期:

一、实验目的

熟练使用PowerDesigner和任意一种面向对象编程语言实现几种常见的设计模式,包括组合模式、外观模式、代理模式、观察者模式和策略模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式,并学会分析这些模式的使用效果。

二、实验内容

使用PowerDesigner和任意一种面向对象编程语言实现组合模式、外观模式、代理模式、观察者模式和策略模式,包括根据实例绘制模式结构图、编写模式实例实现代码,运行并测试模式实例代码。

(1)组合模式

使用组合模式设计一个杀毒软件(AntiVirus)的框架,该软件既可以对某个文件夹(Folder)杀毒,也可以对某个指定的文件(File)进行杀毒,文件种类包括文本文件TextFile、图片文件ImageFile、视频文件VideoFile。

绘制类图并编程模拟实现。

(2)组合模式

某教育机构组织结构如下图所示:

北京总部

教务办公室湖南分校行政办公室

教务办公室长沙教学点湘潭教学点行政办公室

教务办公室行政办公室教务办公室行政办公室

在该教育机构的OA系统中可以给各级办公室下发公文,现采用

组合模式设计该机构的组织结构,绘制相应的类图并编程模拟实现,在客户端代码中模拟下发公文。

(注:

可以定义一个办公室类为抽象叶子构件类,再将教务办公室和行政办公室作为其子类;可以定义一个教学机构类为抽象容器构件类,将总部、分校和教学点作为其子类。

(3)外观模式

某系统需要提供一个文件加密模块,加密流程包括三个操作,分别是读取源文件、加密、保存加密之后的文件。

读取文件和保存文件使用流来实现,这三个操作相对独立,其业务代码封装在三个不同的类中。

现在需要提供一个统一的加密外观类,用户可以直接使用该加密外观类完成文件的读取、加密和保存三个操作,而不需要与每一个类进行交互,使用外观模式设计该加密模块,要求编程模拟实现。

参考类图如下:

reader=newFileReader();EncryptFacadecipher=newCipherMachine();writer=newFileWriter();-reader:

FileReader-cipher:

CipherMachine-writer:

FileWriter

+EncryptFacade()

+fileEncrypt(StringfileNameSrc,:

voidStringplainStr=reader.read(fileNameSrc);StringfileNameDes)StringencryptStr=cipher.encrypt(plainStr);...writer.write(encryptStr,fileNameDes);readerwritercipher

FileWriter

FileReader

+write(StringencryptText,:

voidStringfileNameDes)+read(StringfileNameSrc):

String......

CipherMachine

+encrypt(StringplainText):

String...

(4)外观模式

在电脑主机(Mainframe)中,只需要按下主机的开机按钮(on()),

即可调用其他硬件设备和软件的启动方法,如内存(Memory)的自检(check()),CPU的运行(run()),硬盘(HardDisk)的读取(read()),操作系统(OS)的载入(load())等,如果某一过程发生错误则电脑启动失败。

使用外观模式模拟该过程,绘制类图并编程模拟实现。

(5)代理模式

应用软件所提供的桌面快捷方式是快速启动应用程序的代理,桌面快捷方式一般使用一张小图片来表示(Picture),通过调用快捷方式的run()方法将调用应用软件(Application)的run()方法。

使用代理模式模拟该过程,绘制类图并编程模拟实现。

(6)代理模式

在某应用软件中需要记录业务方法的调用日志,在不修改现有业务类的基础上为每一个类提供一个日志记录代理类,在代理类中输出日志,如在业务方法method()调用之前输出“方法method()被调用,调用时间为2010-10-1010:

10:

10”,调用之后如果没有抛异常则输出“方法method()成功调用”,否则输出“方法method()调用失败”。

在代理类中调用真实业务类的业务方法,使用代理模式设计该日志记录功能的结构,绘制类图并编程模拟实现。

(7)观察者模式

某在线股票软件需要提供如下功能:

当股票购买者所购买的某支股票价格变化幅度达到5%时,系统将自动发送通知(包括新价格)给购买该股票的股民。

现使用观察者模式设计该系统,绘制类图并编程模拟实现。

(8)观察者模式

某联机射击游戏可以实时显示队友和敌人的存活信息,如果有队友或敌人阵亡,所有在线游戏玩家将收到相应的消息,现提供一个统一的中央角色控制类(CenterController)来实现消息传递机制,在中央角色控制器中定义一个集合用于存储所有的用户信息,如果某用户角色(Player)阵亡,则调用CenterController的通知方法notify(),该方法将遍历用户信息集合,调用每一个Player的display()方法显示阵亡信息,如果是队友阵亡,提示信息为:

队友****阵亡,我方队员尚有**人;如果是敌人阵亡,提示信息为:

敌人****阵亡,敌方队员尚有**人。

在调用notify()方法通知其他用户的同时,阵亡的角色对象将从用户信息集合中删除。

现使用观察者模式设计该消息传递模块,绘制类图并编程模拟实现。

(提示:

CenterController充当观察目标,Player充当观察者,Player的die()方法执行时将调用CenterController的notify()方法,在notify()方法中调用其他Player对象的display()方法,并调用detach()方法删除阵亡的Player对象;可以定义两个角色集合,一个用于存储甲方队员信息,一个用于乙方队员信息;所有方法的参数根据实际需要确定)

(9)策略模式

设计一个网上书店,该系统中所有的计算机类图书

(ComputerBook)每本都有10%的折扣,所有的语言类图书(LanguageBook)每本都有2元的折扣,小说类图书(NovelBook)每100元有10元的折扣。

现使用策略模式来设计该系统,绘制类图并编程

模拟实现。

(10)策略模式

某系统需要对重要数据(如用户密码)进行加密,并提供了几种加密方案(如凯撒加密、DES加密等),对该加密模块进行设计,使得用户可以动态选择加密方式。

要求绘制类图并编程模拟实现。

三、实验要求

1.正确无误绘制组合模式、外观模式、代理模式、观察者模式和策略模式实例的模式结构图;

2.使用任意一种面向对象编程语言实现组合模式、外观模式、代理模式、观察者模式和策略模式实例,代码运行正确无误。

四、实验步骤

1.熟悉PowerDesigner15的常用功能;

2.使用PowerDesigner绘制组合模式实例结构图并用面向对象编程语言实现该模式实例;

3.使用PowerDesigner绘制外观模式实例结构图并用面向对象编程语言实现该模式实例;

4.使用PowerDesigner绘制代理模式实例结构图并用面向对象编程语言实现该模式实例;

5.使用PowerDesigner绘制观察者模式实例结构图并用面向对象编程语言实现该模式实例;

6.使用PowerDesigner绘制策略模式结构图并用面向对象编程语

言实现该模式。

五、实验结果

(1)组合模式1:

类图:

结果:

(2)组合模式2:

类图:

结果:

(3)外观模式1

类图:

结果:

plp.txt

test.txt

(4)外观模式2类图:

结果:

(5)代理模式1

类图:

结果:

(6)代理模式2

类图:

结果:

(7)观察者模式1

类图:

结果:

(8)观察者模式1

类图:

结果:

(9)策略模式1

类图:

结果:

(10)策略模式2

类图:

结果:

六、实验总结

通过一段时间的对设计模式的学习和练习,我深刻的意识到了一个好的软件往往是设计模式巧妙运用的结果。

要学好设计模式,就必须得彻底理解设计模式,要能够看懂设计模式中的类图,如果要是设计模式中的类图都看不懂,那学好设计模式只是天方夜谭了。

从开始学习设计模式到现在我们大概已经学了10种左右的设计模式了,每一种都有着它独特的优点,但是事情往往都是有两面性的,它

们也存在着缺点,怎么去用好设计模式对我们来说是一门学问,我们

有必要花时间和精力去学好它。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1