




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件体系结构设计模式实验报告学生姓名:所在学院:学生学号:学生班级:指导老师:完成日期:一、实验目的熟练使用PowerDesigner和任意一种面向对象编程语言实现几种常见的设计 模式,包括组合模式、外观模式、代理模式、观察者模式和策略模式,理解每一 种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式,并学会分析这些模式的使用效果。二、实验内容使用PowerDesigner和任意一种面向对象编程语言实现组合模 式、外观模式、代理模式、观察者模式和策略模式,包括根据实例绘 制模式结构图、编写模式实例实现代码,运行并测试模式实例代码。(1)组合模式使用组合模式设计一个杀毒软件(Ant
2、iVirus)的框架,该软件既可 以对某个文件夹(Folder)杀毒,也可以对某个指定的文件(File)进行杀 毒,文件种类包括文本文件 TextFile、图片文件ImageFile、视频文件 VideoFile。绘制类图并编程模拟实现。(2)组合模式某教育机构组织结构如下图所示:在该教育机构的0A系统中可以给各级办公室下发公文,现采用组合模式设计该机构的组织结构,绘制相应的类图并编程模拟实现, 在客户端代码中模拟下发公文。(注:可以定义一个办公室类为抽象 叶子构件类,再将教务办公室和行政办公室作为其子类; 可以定义一 个教学机构类为抽象容器构件类,将总部、分校和教学点作为其子 类。)(3)外
3、观模式某系统需要提供一个文件加密模块, 加密流程包括三个操作,分 别是读取源文件、加密、保存加密之后的文件。读取文件和保存文件 使用流来实现,这三个操作相对独立,其业务代码封装在三个不同的 类中。现在需要提供一个统一的加密外观类, 用户可以直接使用该加 密外观类完成文件的读取、加密和保存三个操作,而不需要与每一个 类进行交互,使用外观模式设计该加密模块,要求编程模拟实现。参考类图如下:reader = new FileReader(); cipher = new CipherMachine(); writer = new FileWriter();EncryptFacadeFileReader
4、-reader-cipher : CipherMachine-writerFileWriterString plainStr=reader.read(fileNameSrc); String encryptStr=cipher.encrypt(plainStr); writer.write(encryptStr,fileNameDes);+ EncryptFacade ()+ fileEncrypt (String fileNameSrc, : voidString fileNameDes)cipherFileReader+ read (String fileNameSrc) : String
5、FileWriter+ write (String encryptText, : void String fileNameDes)writerCipherMachine+ encrypt (String plainText) : String(4)外观模式在电脑主机(Mainframe)中,只需要按下主机的开机按钮(on(),即可调用其他硬件设备和软件的启动方法,如内存 (Memory) 的自检 (check(), CPU 的运行(run(),硬盘(HardDisk)的读取(read(),操作系 统(OS)的载入(load()等,如果某一过程发生错误则电脑启动失败。使用外观模式模拟该过程,绘制
6、类图并编程模拟实现。(5) 代理模式 应用软件所提供的桌面快捷方式是快速启动应用程序的代理, 桌 面快捷方式一般使用一张小图片来表示(Picture),通过调用快捷方式 的run()方法将调用应用软件(Application)的run()方法。使用代理模式 模拟该过程,绘制类图并编程模拟实现。(6) 代理模式在某应用软件中需要记录业务方法的调用日志, 在不修改现有业 务类的基础上为每一个类提供一个日志记录代理类, 在代理类中输出 日志,如在业务方法method。调用之前输出“方法method()被调用, 调用时间为 2010-10-10 10:10:10”,调用之后如果没有抛异常则输出“方法m
7、ethod()成功调用”,否则输出“方法method()调用失败”。在 代理类中调用真实业务类的业务方法, 使用代理模式设计该日志记录 功能的结构,绘制类图并编程模拟实现。(7) 观察者模式某在线股票软件需要提供如下功能: 当股票购买者所购买的某支 股票价格变化幅度达到 5%时,系统将自动发送通知(包括新价格) 给购买该股票的股民。 现使用观察者模式设计该系统, 绘制类图并编 程模拟实现。(8) 观察者模式 某联机射击游戏可以实时显示队友和敌人的存活信息, 如果有队 友或敌人阵亡, 所有在线游戏玩家将收到相应的消息, 现提供一个统 一的中央角色控制类(CenterController)来实现消
8、息传递机制,在中央 角色控制器中定义一个集合用于存储所有的用户信息, 如果某用户角 色(Player)阵亡,则调用 CenterController的通知方法notify(),该方法 将遍历用户信息集合,调用每一个Player的display。方法显示阵亡信 息,如果是队友阵亡,提示信息为:队友 * 阵亡,我方队员尚有 * 人;如果是敌人阵亡,提示信息为:敌人 * 阵亡,敌方队员尚有 * 人。在调用notify()方法通知其他用户的同时,阵亡的角色对象将从 用户信息集合中删除。现使用观察者模式设计该消息传递模块, 绘制类图并编程模拟实 现。(提示:CenterController充当观察目标,
9、Player充当观察者,Player 的die()方法执行时将调用 CenterController的notify()方法,在notify() 方法中调用其他Player对象的display()方法,并调用detach()方法删 除阵亡的Player对象;可以定义两个角色集合,一个用于存储甲方队 员信息,一个用于乙方队员信息; 所有方法的参数根据实际需要确定)(9) 策略模式 设计一个网上书店,该系统中所有的计算机类图书 (ComputerBook )每本都有10%的折扣,所有的语言类图书 (LanguageBook)每本都有2元的折扣,小说类图书(NovelBook)每100 元有 10 元
10、的折扣。现使用策略模式来设计该系统,绘制类图并编程模拟实现。(10) 策略模式某系统需要对重要数据(如用户密码)进行加密,并提供了几种 加密方案(如凯撒加密、 DES 加密等),对该加密模块进行设计,使 得用户可以动态选择加密方式。要求绘制类图并编程模拟实现。三、实验要求1. 正确无误绘制组合模式、外观模式、代理模式、观察者模式 和策略模式实例的模式结构图;2. 使用任意一种面向对象编程语言实现组合模式、外观模式、 代理模式、观察者模式和策略模式实例,代码运行正确无误。四、实验步骤1. 熟悉PowerDesigner15的常用功能;2. 使用PowerDesigner绘制组合模式实例结构图并用
11、面向对象 编程语言实现该模式实例;3. 使用PowerDesigner绘制外观模式实例结构图并用面向对象 编程语言实现该模式实例;4. 使用PowerDesigner绘制代理模式实例结构图并用面向对象 编程语言实现该模式实例;5. 使用PowerDesigner绘制观察者模式实例结构图并用面向对 象编程语言实现该模式实例;6. 使用PowerDesigner绘制策略模式结构图并用面向对象编程语 言实现该模式。五、实验结果组合模式1:类图:Ti ricf s L fi;鈕ar5lFkn4 lu:= =:丸=丄皿*tiifilt Tile file):理idnc*.ET tie file:rc-x
12、a-sFclsflT iTclair fpSur:!:widtew.sseJelflex TeLies: tclatr:wid+.&rvcri.d:结果:public Client () Folder folder = new Foldezr f 总文件夹卜)$ File filel = new IraageFile;File file2 = new T皀耳tF:lJ_e (”文本文件2 ): File file3 = new 空亡bioFil亡(“视频文彳牛3); folder.addFile(filel);folder * addFile(file;);folder.盘日灯Fil已(til
13、亡3);Folder folderl = new Fo丄cimij 干文彳牛夹:1); File file4= new Imag亡Fil亡(丹图片文件); File fileS = new T已x匸FzlIe (文本文件E); File file6 = new VedioFileC视频文件鈔); folderl.addFile ffile4):folder1addFile(fileb); folder!.addFile ffilefi:folder addFolder(folderl);Folder folder2 = new Folder (T,子文件夹2叫; File file7= new
14、亡 图片文件;File files - new Textfile (n文本文件2”); File file9 = new 甘EdioFjJLie (视频文彳牛9; folderl出日日Fili;folderl . addFile fflle-B j ;folderl且盘dEil亡(file9);folder1.addFolderfolder2);曰 Console曉 DedarationJlJ Jlfait HistoryLogCat Javado ProbleBS餵 Serversfolder kiliviru3():ttl. BtTLEf* vninKtcr : iWf ler inc c
15、fflekNwb + tCZhprS丽神 iir.iacEE D结果:poJjlic Client ( jreachlnstitutiQn zongbu = new MazLnCainpiis寸匕京总咅$);TeacInstitution hunanfenxiac = new SacondCamps;Office tiunancf 1 = new AdOfiu已岭胡南行政Xt公室);Office hunancf2 = new TAOf fice (南教务办公室”):Office chagshafl = new IiciO:E 二 u 已(11 长沙行政室);Office changahaaf2
16、 = new TAOf fice (f,怅沙敎务那公室): hunanfenxiao,(changhafl);hunanf ez-xiao . addZihstractOA (changsriac f 2);TeacIi;5 tJtv 匸丨 on cspoint = new TeachPaint ();TeacMnstitution xtpolnT; = new Te己cHE1 丄n匸(叫兰撤学点j; hun&nfenxiao * AddAb5racE0A(cpoinD;hunaTifexiao, addAbstract-QA (xtpoint-;Ctfice cuaf 1 new AdOff
17、ice (H中市大学行政办公室”】:Office csuofZ = new TAOffxce (F1 南大学荻务井公室 J: cspcint. addAtatractCiA (csicf 1;cspoinuaddkbstracrCA (csQcf2);Office xtcbcof 1 = new 虫cLOfficE F湘潭大学行政办公室11 ;Office xzdxof2 - nev T%口 f ticiE (湘潭大学鞍务井公室; xtpciiLt. addAt atractQA (XT.dx3f 1);xtpcint;. addAbstractCA (xtdxDf 2);zongbu.add
18、rtts-ractOA(hananfenxiac);zongtrn.addAbfltractOk(huDanofl); zonbUraddAloaractOAhunanaf 2);hunaufe*xiao.sendMeasage();口 Console 卫坦1on.J. JVnit自 HistoryLogC&t J avadocFroblcns皑 ServersteriminatEdCli ent (1) Java. Appli cati on D: fiyeclipsefi. 5jreiin.j airaw. ex.e(Dec 16, 20101C: 36:13 PH二潮南分校收到公文怅沙行
19、截苏公室收到公文 长沙執务苏公窒收到公文 怅沙數学点收到公文 中南丈学行政亦公室收到公文 中南大学教务临公室枚到公文 湘齊敎学点收到公文 湘潸大学行政办公室枚到公文 湘潭大学載务办公宜枚到公文外观模式1类图:lEiiLJie f.Lle.IsscZj! 5tiEW- | ritrVFiltbiilifl?v Titc ziELnff szcTyptleit: oidstTize tileSir*r-El结果:public Clien匸(EncriTtFacede facade = new EncriTtfacede (); facade * f ileEncrypt (*D: /pip * t
20、xt t D: /est. txtH ;plp.txtpip. txt -记事本3文件逻)編辑 格式 查看 帮助QD3-22959-326-2 砒如 9-0 闘崛-1| 03 册-39*52 0- 03M72-09765-20949-90945-19673-4373B- 38950-44548我收到分数test txt匚ttst. txt -记爭本_ 1 X 1文件0)編辑格式辺 查看 帮助堪)IS?IS ; d? flight (3) Javi application. B: My&clipse6_ 5jrebin.VjfiV4*.(Dec 13, 201Q10.38内存正在自检 cpuiH
21、f 正在读取硬盘敷据 正在加栽1ft作系统(5)代理模式1类图:结果:public Client()Abstract至FEliuatlou app (AbscractApplicationUtilgetBedn();*pp run 0;X canfi g. xnl| 1 |i?xrtLl veraion=Hl. 0“2 Pc匸口上注弋/classNamO4 旦 Cqhl5:q1里 Dclarti onJu JVm t Hi story|i LogCat Jaaducfr ollcB5terminated Cli ent (4) java Applicati aiiL B : Myeclipse
22、6. 5VjreVbiii!j avaw. sxe(Bee IB. 201010:2应用程序正往运行(6)代理模式2类图:F牛鼻 t Er e 曲 1L&Bscrd.- It N翼EF3r三 Sr- b9f*Ei;4T . S :二i电寸*=:电二 rr1 EJEtvPz-rsi.1!: (尬4呕 jDl 39:: i i.八+ Ix$ljt s讯曲 C : wii结果:piiblic Client () Log plr - (Leg) tTtil.;plr. method ();:J Cli ent. j,X| conf i g. xml1 2 ProxyLogRecord4 洞 Sarva
23、rs 弋10;39:5& F町 Consol 底 Dtclvation Ji JUni t 啬:Hiit&ry仙 J&v&doc 国.fr obi h. e Client (5) Java ApplicitiQix D: Myeclipse6. 5jrabinjavaw. e (D*c I 2010 方法roe匸hex!门被调用,调时间)2010-12-16 22:39:57方法nmiicici ()成功调用(7)观察者模式1类图:结果:public Clien匸()Stack: stock = (5匸ock) Util 回比(1);stock:. 3&tLJ且IL皀(nAfln);st-cc
24、k. setFrice (3453):Observer ob (Observer) Util.getBean(2; acock:, addObs&rver (ob):int 1=0;whilegRandom rand = new Random();m匸ock.setEx匸皀nd也nd-HEKtFlti呂t ( :Btock. norsLfyObserver ( i ;i+;1 2 A5tockcZ a =巳习三m已丫导匸已甜匕吕己工卡亡工-:厂匚二己尸日其三盯三5 I曰 CQnsQloDtcluati*nJ r/i.i t环Hi号twyLp 區 *1负5 J-b.vadoc ProbluBi晁
25、 S*rirrsD.biig DB Brow str Client (6) Java pplicationD Mxeclipse5.5jrebinj ava exeQec l&, 2010IO:4O 31 FHI)帕亲若:ARS 40. &052514各恆辰鬲们注意啦悔目前所咏买旳股黑忻格有所变化.涨厲为M.E1时怎始协格拘3巧叫当前价格为砒33/3盯般票各 钗 il|D.55550Zfi各垃股民们注意施你目帝所购买的腮般某价恪有所变化,丽IE曲鬥“55祐强”原怕也恪肓辭53启前价恪舟磋和”:151慝票备 胡5 0.57C-615fi各谊槪民们注倉拖你目前所购买的勰肢票价格有所变化*涨幅为Em
26、iSSEb原妬价格曲353,前价格为523.335容位胺民们注意城;擁目前所珈买的碾履票桥格有所变雋删均塞.昶阿V7X原始价格茄列53,当前价格为总翻3 .盟卄股票各龈MD.6222S各栓胆民们洼卽也你目前蒯躱的溷嚴票卅格有浙变化,制5前碇山护期强”庫始桥格轴5筑当前价格力M2*卫股票若:鍛 I|D.3133015各傥展民们注意啦:怀目前所购买的勰股票价格有所变忆 碱幅禰31.33015匕原姑价格为昶54当前价格为534 33股黑気逊0.27130532各位股民们注意啦 你日前所购买的勰股票价格有所变也27.1305311格対訥5环当前价格为朋阳.B1脫票塔:AflS sfcteo.sjnsa
27、容住胺民们注息峨:协目前肪嗚买的漏般票忻格有撕变化,錘拘弭.1砖驿”原始价格执輕5毎当前价格知289dX股票名:钗 MD.57Q5 6063存垸展民们柱意哦*你目前所购买的观战票价恪音所变化t涨嗚为和詰*”原始价格鬼珂5扎当前价恪为521加臆5% 胡5 MO.231510各怪股民们注意临伽目前所购买的勰股票价格有所变化*涨幅23.1B71Dl%f原妬价格曲訥5 3当前价格为253.651(8 )观察者模式1类图:结果:priblic Client J) CentrGtrallex ccnew CenteContxcller();al-newa2=newa3=new=newFlayer Flay
28、erPlayerFlayercc addtach(alf cc addtach(a2 f cc addtach(a3f cc addtach (al f Flayer (Alr,);Flayer (A2 ”);Flayer悶”);Flayer L阳”); A);小;,rAT,);小;Player hl = u召Flayer b2 =Player b3 = n召 Flayer 匕弓= cc addtach (kLr cc addtach (c2 f cc addtach (s3r cc addtach (tl f Flayer(51); Flayer(B2); Flayer m ; Flayer
29、; BT,);I(?. Dacl ur i oxi Ju JUni t Hi -x七卫厂章ii Ll问 JKVadocPr ObLeas册J Sefvtx5 Dbii帰 DB BritalipE6 5jrbinSj4vaw axaana 1 氏 2oio10:41-2 FitI Al注意啦:初Ml阵亡,敌方队员尚有3人,我方臥员泄有三人A2洼意啦敌心阵亡.敌方队员尚有弓人*我方队员咼有堆人【A3】注意啦:亡,敌方服员閒有3人,我方臥员的有人【入门洼意啦匸敌人弓1阵亡敌方臥.员尚有2人,我方队员尚有斗人【晩】注怠啦:臥京E1阵亡,我方馭员向有2人,敌方臥贵简有人33洼意啦;舷Ml阵亡,我方甌员尚
30、有3人,敌方队员尚有电人【丽】注怠啦;臥京B1阵亡,我方趴员尚有3人,敌方臥员尚有咗人几门注意啦:訣人盟阵亡敌方跋员尚有2人,我方臥员尚有4人 A2注意啦:SJLAB2S亡,啟方陆员尚有2人,我方臥员灣有九人 (A3洼意啦匚敌人聊阵亡敌方跋员尚有2人我方队员尚有吟人 【工叮注意啦:BiAB2亡,敌方队员尚有2人,我方航员茴有比人 BS1洼意啦匚馭姦22阵亡我方队.员尚有工人”敌方队员尚有总人 【酣】注怠临 瓠康脱阵亡,我方馭员尚有2人,敌方瓯员茴有1 【占叮注意啦;臥友盈1阵亡,我方臥,员尚有3人敌方臥员茴有2人 【肋】洼意啦:舷A1阵亡,我方險员尚有3人,敢方队员筒育2人 【几町注意啦匚趴友
31、A1阵亡我方跋员尚有3人,敌方趴员尚有2人 Bi注意啦:ftVvAlP亡,酿方队贾閒有3人,我方臥员简有2人 【BC洼意啦|敌人至1阵亡.敌方队.员尚有弓人我方队员尚有益人A21洼意啦:敌心阵亡敌方队.员尚有二人”我方队员尚有3人 (A3注怠啦:JUBSff亡,敌方馭员尚有人,我方趴员茴有3人 A1洼意啦:敌人33阵亡,敌方职员尚有1A,我方陆员尚有3人 【丽】注意啦;臥友B3阵亡,我方氏员尚有:人,敌方臥员茴有3人“3】注意啦I限友嗣阵亡我方駅员尚有沃,敢方臥员尚有1人 【盒叮注意啦:臥衣鮎阵亡,我方队贾尚有2人,蔽方臥员简有丄人 【日门洼意啦:敌人赵阵亡.敌方队.员尚柚几我方队貝诸有1人A21洼意啦:敌人24阵亡敌方臥.员尚有人”我方队员尚有2人A注怠啦:敌人64阵亡,敌方馭员尚有人,我方趴员茴有2人盍方荻融利(9)策略模式1类图:结果:publiQ Client () ;3aolc book (3ookUtil. gstBsan (); book setBoakMame ( J比 t 比程序设计11); bQoJc. setPrice (2S0):Constructor cs = new Constructor();C3 *sslBooJc(book);cs.discount();丄t vim.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 监控业务知识培训课件
- 法律机器人客服系统创新创业项目商业计划书
- 智能日程管理与提醒应用创新创业项目商业计划书
- 农产品直播带货培训创新创业项目商业计划书
- 法律智能咨询机器人迭代创新创业项目商业计划书
- 自动驾驶车辆远程监控系统创新创业项目商业计划书
- 游戏化学习编程挑战创新创业项目商业计划书
- 数学本体性知识培训心得课件
- 护理专业老师试讲
- 数字指示秤专业培训知识课件
- 部编版三年级语文上册说课标说教材
- 2025届江苏省苏州地区学校英语八年级第二学期期末联考试题含答案
- 胸痹的中医治疗
- 人流术后的护理及健康宣教
- 财务岗位笔试题目及答案
- 兵团两委考试试题及答案
- DB31/T 636.1-2018会议经营与服务规范第1部分:会议服务机构等级划分与评定
- 2025java中高级面试题及答案
- 偷盗自愿赔偿协议书
- 创新素养评价体系:核心素养框架下的关键指标研究
- 夫妻房屋加名协议书
评论
0/150
提交评论