《2023年策略模式的运用实验报告.docx》由会员分享,可在线阅读,更多相关《2023年策略模式的运用实验报告.docx(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、云南大学软件学院实验报告序号:姓名: 杨林燕 学号:专业:软件工程 日期: 成绩:实验一策略模式的运用一、实验目的:策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的 变化独立于使用算法的客户。在熟悉策略模式相关理论知识的基础上,使用策略模式实现 一个小游戏。二、实验规定:使用策略模式实现一个小游戏,规定如下:1 .游戏中有三个角色:和尚,侠女,忍者;2 .每个角色都有生命值和魔法值,但各角色不同。3 .各角色外观不同。4 .每个角色具有魔法袭击和物理袭击;5 .物理袭击有三种:用刀、用剑、用手;6 .魔法袭击也有三种:火系魔法、金系魔法、水系魔法;7 .各角色可以动态
2、更换物理、魔法袭击方式,也可以动态选择袭击方法。1、设计并绘制该程序的类图;2、依照设计的类图使用Java语言编写代码,并实现该程序;3、除了核心的模式相关类实现外,提供测试环境,按照难度高低,分别是:a)控制台程序,Client硬编码初始化模式和测试环境,运营结果文本输出;b)控制台程序,Clien t初始化测试环境,并根据用户输入运算,运营结果文本输 出; 设计并实现用户U I , Client初始化测试环境,并根据用户在UI控件上的输入运算,运营结果文本输出;三、实验内容:1类图:Mof a H u o mofa()什dis p lay()Role Ren display ()2.代码:
3、Ro 1 e 类:pu bli c abst r ac t c 1 a ss Role W u liG o ng wul i Gong;Mof a G o n g mofaGon g ;pu blic Role() p u blic ab s tract void di s p 1 a y ();pu b lie void perf o rm Wu 1 i () 。wu 1 iGo n g. wuli(); public v o i d p e rf o r mMofa () m o f a Gong.mofa ();)pub lie vo i d wa i g u a n()。System.
4、out. p r in t 1 n (每个角色外观不同!”);Wp u blic v o id setWu 1 iG o ng(Wul i Gong wg)。w u liGong = w g ;public void se t MofaGo n g(M o faGong mg)s m o faGong = mg;R o le继承类:public c 1 as s Ro 1 eHe extends Ro 1 epublic RoleHe()o wuliGon g = new Wul i Dao();o。mo f aGong = new M o faJ i n();) pu blie vo i d
5、 display() 。System, out. pr i n t In (我是和尚“);0 ) pu b 1 ic c lass Rol e Mo extends Rol e p ub 1 ic RoleMo()o m o faGo n g= new Mo f aH u o();wuliG o n g = new W u liSh o u();w。p ublic void dis play() 。Sy stem, o u ?. printl n (我是魔女”);。) )pub 1 ic c 1 a s s R o 1 eRen e x tends Role pu blic R oleRen(
6、)o wuliGo n g = new Wul i J i an();0 mofaGo ng= new Mof a Shu i ();6 )publ i c voi d d i sp 1 a y () o Syst e m .0 t .p r i nt 1 n(“我是忍者”);M o f a G o n g 接口:pu b lie i nte r fa c e Mo faGong 。pub lie v oid mof a ();p u b 1 i c class M o faHuo impleme n ts M o faGong 。public vo i d m ofa() Sys tem.o
7、ut.pr i ntln(正在使用火系魔法袭击对方”); )pu bl i c c 1 a s s Mof a J in implements M o faGon g 。public v oi d mof a ()System.out. printin(正在使用金系魔法袭击对方”);)public cl a s s Mo f aS h ui implements M o f a Go n g o publi c v o id mofa() o System. out. p rintln(正在使用水系魔法袭击对方,,);。W u 1 iG o ng 接口:pub 1 ic int e rface
8、 Wu 1 i Gon g d public voi d wuli();pub lie c las s WuliDao i mplement s Wu 1 iGong public v oi d wul i () o Sy s t e m.out. print 1 n(正在使用刀袭击对方”);public clas s WuliJ ia n implements WuliGon g p u blic v oid wuli() 。Syst e m. ot.printl n (正在使用剑袭击对方”);。)publi c cl a s s WuliShou im p 1 ements WuliGon
9、g 。p ublic vo i d wuli() 。Syst e m.ou .pr i ntln (正在使用手袭击对方”);0 YanShi 类:pu bli c class Y anSh i p ubli c s tatic v o id mai n ( S tring a r gs)。R o le h e=ne w RoleHe();。h e.display(); h e .performWu 1 i();h e. pe r f ormMo f a(); Role mo = new RoleMo();mo. d i sp 1 a y();。mo.performMof a ();mo. pe
10、rf o rmWul i ();R ole ren=new R oleRen();r e n. d is p lay();ren. p e rformW u 1 i ();ren. perf ormMof a (); )3 .测试结果:后 Console 汉,i Problems Javadoc 及 DeclarationterminatedYanShi Java Application CProgram Files (x86)Javajdk1.7,0_45bin正在生黑力改壬叶方正三堂可金裒鬓三女三谷方费是京士三三生用.匕区失三就三谷万正左堂用手攻千片方我是花咨三生*用型戏市H方正在笠里水塞量总岌千寸斤四、实验总结:通过本次实验,深化了解了策略模式的结构,意图以及使用效果。算法和使用算法的对象 互相分离,客户程序可以在运营时动态选择算法,代码复用性好,便于修改和维护;用组合替 代继承,效果更好。消除了冗长的条件语句序列,将不同的算法硬编码进一个类中。指导教师署名: