下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机科学与技术学院软件设计模式与体系结构课程作业(一)(2016/2017学年第二学期)学生姓名:学生专业:学生班级:学生学号:指导教师:雷君软件工程1426010108王飞实验一错误!未定义书签。工厂方法模式汽车保险.抽象工厂方法模式房屋信息.错误!未定义书签。错误!未定义书签。实验二错误!未定义书签。组合模式空军指挥系统.适配器模式客户信息验证.错误!未定义书签。.错误!未定义书签。实验三错误!未定义书签。桥接模式几何立体体积.访问者模式计算机部件销售软件.错误!未定义书签。错误!未定义书签。实验四错误!未定义书签。策略模式整数排序.状态模式交通信号灯.错误!未定义书签。错误!未定义书签
2、。实验五错误!未定义书签。MVC软件体系结构错误!未定义书签。实验工厂方法模式汽车保险【实验内容】在例的汽车保险管理应用程序实例上添加一个名为LuxuryCarInsurance的类,并且,该类要与其他的类一样能执行相应的功能。【添加代码】1、添加LuxuryCarInsurance类:publicclassLuxuryCarInsuranceimplementsAutoInsuranceprivateStringdescription;publicStringgetInsuranceDescription()description="LuxuryCarInsurance:nnLux
3、uryCarInsurancecoveragepaysformedicalbills"+"lostwages,rehabilitation,treatmentand/or"+"funeralcostsforanyoneinjuredorkilled"+"byyourcar.Suchcoveragewillalsopayfor"+"painandsufferingdamageswhenathird"+"partysuccessfullysues."returndescription;2、
4、添加LuxuryCarPolicyProducer类:publicclassLuxuryCarPolicyProducerimplementsPolicyProducerpublicAutoInsurancegetPolicyObj();else("nCorrectformatofEmailAddr.");实验结果】【实验小结】通过适配器,客户端可以调用同一接口,因而对客户端来说是透明的。这样做更简单、更直接、更紧凑;复用了现存的类,解决了现存类和复用环境要求不一致的问题;将目标类和适配者类解耦,通过引入一个适配器类重用现有的适配者类,而无需修改原有代码;-个对象适配器可以
5、把多个不同的适配者类适配到同一个目标,也就是说,同一个适配器可以把适配者类和它的子类都适配到目标接口。对于对象适配器来说,更换适配器的实现过程比较复杂。实验三桥接模式几何立体体积【实验内容】在例中的设计实验层次类部分中,添加Ellipsoid(椭球)类,并且实现针对椭球体积的计算。【添加代码】1、添加椭球类:publicclassEllipsoidimplementsGeoFormprivatedoubleaRadius;privatedoublebRadius;privatedoublecRadius;publicEllipsoid(doubleaRadius,doublebRadius,d
6、oublecRadius)=aRadius;=bRadius;=cRadius;publicdoublecomputeVolume()doublevolume=*aRadius*bRadius*cRadius;returnvolume;2、添加GUI:(1)privateJTextFieldtxtEllipsoidRadius_a;privateJTextFieldtxtEllipsoidRadius_b;privateJTextFieldtxtEllipsoidRadius_c;2) publicstaticfinalStringELLIPSOID="Ellipsoid"
7、3) (ELLIPSOID);4) elseif(ELLIPSOID)Stringa_radius=();Stringb_radius=();Stringc_radius=();doublea=(a_radius);doubleb=(b_radius);doublec=(c_radius);form=newEllipsoid(a,b,c);5) elseif(ELLIPSOID)displayNewGUI(getTypePanel(ELLIPSOID);6) elseif(ELLIPSOID)JLabellblRadius_a=newJLabel("InputRadiusa"
8、;);JLabellblRadius_b=newJLabel("InputRadiusb");JLabellblRadius_c=newJLabel("InputRadiusc");txtEllipsoidRadius_a=newJTextField(8);txtEllipsoidRadius_b=newJTextField(8);txtEllipsoidRadius_c=newJTextField(8);GridBagLayoutgridbag=newGridBagLayout();(gridbag);GridBagConstraintsgbc=new
9、GridBagConstraints();(lblRadius_a);(lblRadius_b);(lblRadius_c);(txtEllipsoidRadius_a);(txtEllipsoidRadius_b);(txtEllipsoidRadius_c);(lblMeasure);(cmbMeasure);=5;=5;=1;=8;=0;=0;(lblRadius_a,gbc);=1;=0;(txtEllipsoidRadius_a,gbc);=0;=1;(lblRadius_b,gbc);=1;=1;(txtEllipsoidRadius_b,gbc);=0;=2;(lblRadius
10、_c,gbc);=1;=2;(txtEllipsoidRadius_c,gbc);=0;=3;(lblMeasure,gbc);=1;=3;(cmbMeasure,gbc);实验结果】实验小结】通过这次实验我们大概理解了桥接模式,通过关联“抽象层次类”与“具体层次类”这一桥梁,将表示两个维度的层类(数据结构)粘贴在一起,形成更大的数据结构,而这种变化又不会对现有的类产生影响,这种思路的终极想法是将软件设计的抽象部分与实现部分分离,使它们都可以独立的变化。访问者模式计算机部件销售软件【实验内容】在例的设计中添加一个类SoundBox该类实现接口ComputerParts,并且其他的计算机部件的类
11、的结构类似。【添加代码】1添加SoundBox类:publicclassSoundBoximplementsComputerPartspublicstaticfinalStringNAME="SoundBox"privatefinaldoublePRICE=;publicstaticfinalStringFEATURES="SoundBox.X3K"publicStringgetName()returnNAME;publicdoublegetPrice()returnPRICE;publicStringgetDescription()returnFEAT
12、URES;publicvoidaccept(Visitorv)"SoundBoxhasbeenvisited.");(this);2、添加GUI:(1)StringcompParts="Case","Motherboard","Microprocessor","Memory","DriveController","VideoCard","Fan","PowerSupply","HardDiskDrive&q
13、uot;,"CDDrive","DVDDevice","Monitor","Keyboard","Mouse","SoundBox","Assembly","WholePC"(2)for(intk=11;k<17;k+)add(0,k,cPartsk);(3)elseif(source=cParts14)states14=state;elseif(source=cParts15)if(state=SELECTED)cParts1.
14、setSelected(true);cParts8.setSelected(true);elseif(state=DESELECTED)cParts1.setSelected(false);cParts8.setSelected(false);states15=state;elseif(source=cParts16)if(state=SELECTED)cParts0.setSelected(true);for(intk=11;k<15;k+)cPartsk.setSelected(true);elseif(state=DESELECTED)cParts0.setSelected(fal
15、se);for(intk=11;k<15;k+)cPartsk.setSelected(false);states16=state;(4)elseif(m=14)&&(states14=SELECTED)part=newSoundBox();("SoundBox");3、添加Visitor:publicabstractvoidvisitSoundBox(SoundBoxe);4、添加PriceVisitor:publicvoidvisitSoundBox(SoundBoxe)price=();(newDouble(price);total+=price
16、;5、添加PartsInfoVisitor:publicvoidvisitSoundBox(SoundBoxe)partInfo=();allOders=allOders+"n"+partInfo;实验结果】【实验小结】通过此次实验让我们更加深刻的理解了访问者模式,它在处理数据结构较稳定,但是作用于其上的操作需要经常变化的问题时时非常有效的,因此可以在不改变该结构体中的类的基础上定义一个新的操作,这个实验就是如此,我们只需要添加新的类,然后调用accept(pv)方法就可以。实验四策略模式整数排序【实验内容】在例的设计中的排序策略部分,添加一个类BidirectionaBu
17、bbleSort,进行“双向冒泡法排序”,以便扩展该排序系统的功能。为了实现扩展功能,需要相应地修改Context类与客户图形界面类StrategyGUI。【添加代码】1、添加BidirBubbleSort类:publicclassBidirBubbleSortimplementsSortAlgorithmpublicintsort(intnums,Contextct)();intj;intlimit=;intst=-1;while(st<limit)booleanflipped=false;st+;limit-;for(j=st;j<limit;j+)if(numsj>nu
18、msj+1)intT=numsj;numsj=numsj+1;numsj+1=T;flipped=true;if(!flipped)();returnnums;for(j=limit;-j>=st;)if(numsj>numsj+1)intT=numsj;numsj=numsj+1;numsj+1=T;flipped=true;if(!flipped)();returnnums;();returnnums;2、添加GUI:(1)publicstaticfinalStringBidirBubble="BidirBubbleSort"(2)(BidirBubble)
19、;(3)if(BidirBubble)sa=newBidirBubbleSort();实验结果】【实验小结】通过此次实验让我们更加理解了策略模式的优势,实现了高内聚低耦合,它的应用场景是当有多个仅在行为上不同但是相关的类存在时,采用策略模式提供一个为一个类配置多种行为之一的方法。此时增加双向冒泡排序法时,不需要修改Context类的代码,只需要修改客户类(StrategyGUI)。状态模式交通信号灯实验内容】在例的设计中的交通信号灯状态部分,添加一个类BlueLightT黄T蓝T红的状态变化,以便扩展该交通信号灯系统的状态。【添加代码】1、添加BlueLight类:importpubliccl
20、assBlueLightextendsTrafficLightpublicBlueLight()state=BLUE;publicColorsetColor()return;publicvoidperformTask()();();changeState();publicvoidchangeState()state=RED;TrafficLightstateObj=newRedLight();(stateObj);2、添加TrafficLight:protectedfinalStringBLUE="Blue"3、添加YellowLight:state=BLUE;TrafficLightstateObj=newBlueLight();实验结果】实验小结】通过此次实验让我们理解了策略模式和状态模式的区别与联系,联系是将控制状态变化的类单独分装在一个类中,把它们独立出来,不要和那些不需要变化的代码混合在一起,这和策略模式相似。不同
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国洗碗机市场安装服务标准化与售后痛点解决方案
- 2026中国稀土功能材料全球供应链重构趋势与战略投资洞察报告
- 2026中国丝绸纺织品加工产业行业现状供需调研与发展规划分析报告
- 2026中国消费电子指纹传感器屏下技术演进与用户体验升级报告
- 球罐接管改造施工技术措施培训
- 2026中国数据中心DPU芯片架构创新与云计算服务商需求响应研究
- 2026智能加压冷疗设备在职业体育俱乐部的商业化应用报告
- 2026农产品冷链物流体系完善与品质保障
- 管桩厂安全生产技术培训课件
- 2026全球云计算服务行业市场发展趋势与前景展望战略研究报告
- 职业暴露(锐器伤)演练脚本(2篇)
- 2024-2025学年福建省厦门市思明区五年级(下)期末数学试卷
- GJB763.5A-2020舰船噪声限值和测量方法第5部分舰船设备空气噪声测量
- 严肃财经纪律培训班课件
- 排污许可证审核及环境应急管理服务方案投标文件(技术方案)
- 中层管理人员能力培训
- 培训机构教材管理制度
- 店面租赁订金合同范例
- 果园产品购销合同
- 入党申请书专用纸-A4单面打印
- 《临床技术操作规范病理学分册》医院用
评论
0/150
提交评论