中南大学软件体系结构实验五解读_第1页
中南大学软件体系结构实验五解读_第2页
免费预览已结束,剩余25页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅读下载 1 中南大学软件体系结构实验五解读软件体系结构 实验报告项目名称结构型和行为型设计模式实 验专业班级软件工程1203学姓 名实验成批阅教师:2014年12月241实验5结构型和行为型设熟练使用PowerDesigner和任意一种面 向对象编程语言实现几种常见的结构型 和行为型设计模式,包括代理模式、职 责链模式和命令模式,理解每一种设计 模式的模式动机,掌握模式结构,学习 如何使用代码实现这些模式。二、实验内容1.在某应用软件中需 要记录业务方法的调用日志,在不修改 现有业务类的基础上为每一个类提供一绩:日计模式实验每组人数:13

2、实验要求:别:3实验学时:2实验类型:1实验类一、实验目的精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅读下载 2 精选公文范文,管理类,工作总结类,工作计划类文档,感谢阅读下载精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅读下载个日志记录代理类,在代理类中输出日 志,例如在业务方法method。调用之前 输出 方法method()被调用,调用时间为2014-11-510:10:10,”调用之后如果没有 抛异常则输出方法method。调用成功” 否则输出方法method()调用失败”在代 理类中调用真实业务类的业务方法,使 用代理模式设计该日志记录模块的结 构,绘制类软图并

3、编程模拟实现。2.某软件公司承接了某信息咨询公司的 收费商务信息查询系统的开发任务,该 系统的基本需求如下:(1)在进行商务信息查询之前用户需要通过身份验 证,只有合法用户才能够使用该查询系 统;(2)在进行商务信息查询时系统需要记录查询日志,以便根据查询次 数收取查询费用。该软件公司开发人员 已完成了商务信息查询模块的开发任 务,现希望能够以一种松耦合的方式向 原有系统增加身份验证和日志记录功 能,客户端代码可以无区别地对待原始的商务信息查询模块和增加新功能之后-精选公文范文,管理类,工作总结类,工作计划类文档,感谢阅读下载-2精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅读下载的

4、商务信息查询模块,而且可能在将来 还要在该信息查询模块中增加一些新的 功能。试使用代理模式设计并编程模拟实现该收费商务信息查询系统。【提 示:使用保护代理和智能引用代理】3.某企业的SCM(Supply ChainManagemen,供应链管理)系统中包含一 个米购审批子系统。该企业的米购审批 是分级进行的,即根据采购金额的不同 不同层次的主管人员来审批,主任可以 审批5万元以下的采购单,副董事长可 以审批5万元至10万元的采购单,董事 长可以审批10万元至50万元的采购单,50万元及以上的采购单就需要开董事会讨论决定。如下图所示:2金额V5万元5万元W金额V10万元10万元W金额v50万元金

5、额50万元采购 单采购人员主任副董事长董事长董事会 试使用职责链模式设计并实现该系统。4.某公司欲开发一个软件系统的在线文档帮助系统,用户可以在任何一个查询 上下文中输入查询关键字,如果当前查精选公文范文, 管理类,工作总结类,工作计划类文档,感谢阅读下载- 3精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅读下载询环境下没有相关内容,则系统会将查 询按照一定的顺序转发给其他查询环 境。基于上述需求,试采用职责链模式 对该系统进行设计。5.房间中的开关就是命令模式的一个实例,现用 命令模式来模拟开关的功能,可控制对 象包括电灯和电风扇,绘制相应的类图 并编程模拟实现。6.某软件公司欲开

6、发一个基于Windows平台的公告 板系统。系统提供一个主菜单(Me nu), 在主菜单中包含了一些菜单项(Menultem),可以通过Menu类的addMe nultem()方法增加菜单项。菜单项 的主要方法是click(),每一个菜单项包含一个抽象命令类,具体命令类包括OpenComma nd(打开命令),CreateCommand(新建命令),EditCommand(编辑命令)等,命令类具有 一个execute(方法, 用于调用公告板系 统界面类(BoardScreen)的open()、create edit()等方法。现使用命令模式 设计该系统,使得Menultem类与精选公文范文,

7、管理类,工作总结类,工作计划类文档,感谢阅读下载-4精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅读下载 6 BoardScree n类的耦合度降低,绘制类图 并编程实现。三、实验要求1.结合实例,正确无误地绘制代理模式、 职责链模式和命令模式的模式结构图;2.使用任意一种面向对象编程语言实现代理模式、职责链模式和命令模式实例, 代码运行正确无误。四、实验步骤1.结合实例,使用PowerDesig ner绘制代理模式实例结构图 并用面向对象编程语言实现该模式实例;2结合实例,使用PowerDesig ner绘制代理模式实例结构图 并用面向对象编程语言实现该模式实 例;3.结合实例,使

8、用PowerDesig nei绘制职责链模式实例结构 图并用面向对象编程语言实现该模式实 例;4结合实例,使用PowerDesig ner绘制职责链模式实例结构 图并用面向对象编程语言实现该模式实 例;3 5.结合实例,使用PowerDesig ner绘制命令模式实例结构图 并用面向对象编程语言实现该模式实精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅读下载 7 精选公文范文,管理类,工作总结类,工作计划类文档,感谢阅读下载精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅读下载例;6结合实例,使用PowerDesig nei绘制命令模式实例结构图 并用面向对象编程语言实现该模

9、式实 例。五、 实验结果1.类图:public class Clie nt public in terface AbstractLog publicclassProxyLogimpleme ntsAbstractLog实现代码:public static void main( Stri ng args) AbstractLogabstractLog=(AbstractLog)();();publicvoidmethod();private RealLog realLog; public ProxyLog() Override 4realLog=newRealLog();publicvoidme

10、thod() public voidpreMethod() public voidpostRequest()方法method。调用成功 方法method()被调用V/ TODO Aut o-generated method stub preMethod();();postRequest(); public class RealLogimpleme nts AbstractLogProxyLog Override public void method()精选公文范文,管理类,工作总结类,工作计划类文档,感谢阅读下载- 6 精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅读下载 / TOD

11、O Auto-generated methodstub方 法method()执行中52.类图:public class Client实现代码:public staticvoidmain (Stri ngargs)AbstractQuery abstractQuery =(AbstractQuery)(); (); (6 (1);();public in terface AbstractQuery publicclassRealQueryimplementsAbstractQuery public classProxyQueryimpleme ntsAbstractQuery private R

12、ealQuery realQuery;Override public void queryLog() /TODOAut o-gen erated method stub Overridepublic void setPermission(int permission) /TODO Auto-generated methodstub Override public void query() /TODO Auto-generated methodstub该用户查询次数加1public void query();public void setPermission(int permissi on);p

13、ublic void queryLog();-精选公文范文,管理类,工作总结类,工作计划类文档,感谢阅读下载-7精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅读下载7 private int permission;public ProxyQuery() Override public voidquery() public voidsetPermission(int permission) publicvoid identify() public voidqueryLog() 记录查询日志if (permissio n = 0)用户没有查询的权限= permission; / TODO

14、Auto-generated method stubidentify(); realQuery = newRealQuery(); permissio n(); queryLog();3类图:public class Client public static void main( Stri ng args) LeaderIeader1,leader2,leader3,leader4|eader1 =new BoardOfDirectors(); leader2 = newChairma n();leader3 = newViceChairma n(); Ieader4 = new Direct

15、or(); 9 (leader3); (leader2);(leader1);PhuraseRequest=0; elseProxyQuery实现代码:精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅读下载phuraseRequest1,phuraseRequest2,phurase- 精选公文范文,管理类,工作总结类,工作计划类文档,感谢阅读下载- 8 精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅读下载 12 Request3,phuraseRequest4;phuraseRequestl=newPhuraseRequest(4); phuraseRequest2 = n

16、ewPhuraseRequest(9);phuraseRequest3 = newPhuraseRequest(46);phuraseRequest4=newPhuraseRequest(60); (phuraseRequestl);(phuraseRequest2); (phuraseRequest3);(phuraseRequest4); public abstract classLeader public classPhuraseRequest public intgetPhurasePrice() retur n phurasePrice;private int phurasePric

17、e = 0; publicPhuraseRequest(intphurasePrice) =phurasePrice;public voidsetSuccessor(Leader successor) =successor; protected String name; protectedLeader successor; public abstractvoidhan dleRequest(PhuraseRequest request); 10 public voidsetPhurasePrice(int phurasePrice) -精选公文范文,管理类,工作总结类,工作计划类文档,感谢阅读

18、下载-=phurasePrice; public class Director extends精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅读下载13Leader Override public void handleRequest(PhuraseRequest request) /TODO Auto-gen eratedmethod stub if () public classChairma nexte ndsLeaderOverride public voidhandleRequest(PhuraseRequest request) / TODO Auto-generated

19、methodstub if () Override public voidhandleRequest(PhuraseRequest request) / TODO Auto-generated method数额较大,董事会讨论后再做决定 else if(!=null) (request); 124.类图:/* Module:* Author: zxh *Purpose: Defines the Class QueryRequest*/13 import *;/* pdOid-精选公文范文,管理类,工作总结类,工作计划类文档,感谢阅读下载-精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅

20、读下载144e220f24-3dbf-407c-aae7-0a86899cefb4*/ public class QueryRequest /*pdOid;4ba45ef-06a1- 4f63-8d3b-1b18fa116140*/ private String queryKey; /* pdOid5b785384-1a48-456a-9ad4-a2571767567b*/public Stri ng getQueryKey() return queryKey; /*param newQueryKey * pdOid4674578e-a00f-497e-bb60-56e1beb82330*/

21、public void setQueryKey(String newQueryKey) queryKey =n ewQueryKey;/* paramqueryKey* pdOidb719ff48-1a7a-4840-bda3-dc8f8a6ce13a*/ public void queryRequest(String queryKey)/ TODO:impleme nt/*精选公文范文,管理类,工作总结类,工作计划类文档,感谢阅读下载* Module:* Author: zxh *精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅读下载Purpose: Defines the Clas

22、s Paragraph*9ae7099f-e76a-41bd-968c -11c095a29790*/ public class Paragraph exte nds Con text14pdOid/* param request*;965c152-c6be-4bdc-8f62-51a30d452723*/public voidhan dleRequest(QueryRequest request) / TODO: implement /* Module:* Author: zxh *Purpose: Defines the Class Essay*287918b6-621f-47bc-902

23、1 - bbd5d42333f1*/ public class Essay exte nds Con text /*param request * pdOid-精选公文范文,管理类,工作总结类,工作计划类文档,感谢阅读下载-*import *;/* pdOid*import *;/* pdOid精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅读下载12精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅读下载492641e0-df9b-4937-b8de-d81e7eb8cd9a*/public voidhan dleRequest(QueryRequest request) /

24、TODO: implement /* Module:* Author: zxh *Purpose: Defines the Class Con text*1ad714e-b1a6 -4b8f-9b13-9f0310e3959d*/ public class Con text /* pdOid72000b24-0a7b-410a-94d8-cceebd35349e*/15 protected Con text successor;/* pdRole Info migr=no n ame=C on textassc=associati on1 type=Aggregati on */public

25、Con text co ntextB;/* pdOid5d2dca0a-ffd4-4e70-9373-4576d02b959d*/ public void setSuccessor() / TODO:implement /* paramrequest* pdOid*import *;/* pdOid精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅读下载- 精选公文范文,管理类,工作总结类,工作计划类文档,感谢阅读下载-13精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅读下载ope nFan Comma nd=new精选公文范文,管理类,工作总结类,工作计划类文档,感谢阅读下载

26、19983548e8-64cd -42e5-9f62-c74fb1e4c027*/public voidhan dleRequest(QueryRequest request) / TODO: implement /* Module:* Author: zxh *Purpose: Defines the Class Sentence*26d3c00-8fd4 -4c26-81ca-1b51299b726d */ public class Sentenceexte nds Con text/* param request * pdOidc86cba07-17d2-4250-a8c5-5e1f07

27、ea987*/public voidhan dleRequest(QueryRequest request) / TODO: implement 5.类图:16public class*import *;/* pdOid精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅读下载ope nFan Comma nd,AbstractCommand精选公文范文,管理类,工作总结类,工作计划类文档,感谢阅读下载20Clie nt public static void main( Stri ng args)AbstractComma nd精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅读下载

28、ope nFan Comma nd,AbstractCommand精选公文范文,管理类,工作总结类,工作计划类文档,感谢阅读下载21openFanCommand(); AbstractCommandcloseFa nComma nd=newcloseFanCommand(); AbstractCommandope nLightComma nd=newope nLightComma nd(); AbstractCommand closeLightComma nd=newcloseLightComma nd();Con trollercon trollerCon troller(ope nFanC

29、omma nd,closeFanCommand,实现openLightComma nd,closeLightCommand); class Con trollerAbstractComma ndprivate closeFanComma nd;AbstractComma nd代码:public privateopenF精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅读下载ope nFan Comma nd,AbstractCommand精选公文范文,管理类,工作总结类,工作计划类文档,感谢阅读下载22private closeLightComma nd; 17Con troller(A

30、bstractComma ndcloseFa nComma nd, public class closeFanCommand extendsAbstractComma ndprivate Fan fan;public closeFanCommand() Override public void excute() /TODO Auto-gen erated method stub (); /TODO Auto-gen erated con structor stubfan = new Fan(); public voidope nFan() public void closeFa n()publ

31、ic void openLight() public voidcloseLight() (); ();();(); /TODOAuto-gen erated con structor stub=ope nFan Comma nd;=closeFa nComma nd;=ope nLightComma nd;=closeLightComma nd;AbstractComma nd ope nLightCommand,AbstractComma nd closeLightCommand) public class ope nFan Comma nd exte精选公文范文,管理类,工作总结类,工作计

32、划类文档,欢迎阅读下载closeLightComma ndexte nds精选公文范文,管理类,工作总结类,工作计划类文档,感谢阅读下载23ndsAbstractCommand public class精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅读下载精选公文范文,管理类,工作总结类,工作计划类文档,感谢阅读下载24AbstractCommand public classope nLightComma ndexte ndsAbstractComma ndprivate Lightlight; public openLightCommand() /TODO Auto-gen erat

33、ed con structor stubprivate Light light; publiccloseLightCommand() Overridepublic void excute() / TODOAuto-gen erated method stub (); / TODOAuto-gen erated con structor stub light =new Light(); private Fan fan; publicopenFanCommand() Overridepublic void excute() / TODOAuto-gen erated method stub ();

34、 / TODOAuto-gen erated con structor stub fan = newFan ();19 light = new Light();Override public void excute() /TODOAuto-generatedmethodstub();public abstract class AbstractCommand public class Fan publicclass Light public void ope n()public void close() 真的勇士敢于精选公文范文,管理类,工作总结类,工作计划类文档,感谢阅读下载-17精选公文范文

35、,管理类,工作总结类,工作计划类文档,欢迎阅读下载面对无边的黑暗,然后我就给他关了灯 上帝说要有光,然后就开了灯publicvoid ope n() public void close()连风扇都吹不起了开不起空调,只能吹风扇了public abstract void excute();20现代码:6.类图:实import ;public classMenu private static ArrayListmen ultemList = new ArrayList(); publicstaticvoidaddMe nultem(Me nultemmen ultem) public static

36、 voidmain( Stri ng args) AbstractComma ndope nComma nd,createCommand,editCom mand; ope nComma nd = newOpen Comma nd(); createComma nd =new CreateComma nd();21(menultem); editCommand= new EditComma nd(); Men ultem menultem1,me nultem2,me nultem3;men ulteml=newMenultem();men ultem2=newMenultem();men ultem3=newMe nultem();精选公文范文,管理类,工作总结类,工作计划类文档,欢迎阅读下载精选公文范文,管理类,工作总结类,工作计划类文档,感谢阅读下载26(ope nComma nd);(createComma nd);(editComma nd);(me nulteml);(me

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论