ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:211.56KB ,
资源ID:1106065      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-1106065.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(软件设计模式和体系结构.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

软件设计模式和体系结构.docx

1、软件设计模式和体系结构 计算机科学与技术学院软件设计模式与体系结构课程作业(一) (2016/2017学年 第二学期)学生姓名: 雷 君学生专业: 软件工程学生班级: 142601学生学号: 201426170108指导教师: 王 飞 目 录实验一 1工厂方法模式汽车保险 1抽象工厂方法模式房屋信息 3实验二 6组合模式空军指挥系统 6适配器模式客户信息验证 8实验三 11桥接模式几何立体体积 11访问者模式计算机部件销售软件 14实验四 17策略模式整数排序 17状态模式交通信号灯 19实验五 21MVC软件体系结构 21实验一工厂方法模式汽车保险【实验内容】 在例2.3的汽车保险管理应用程

2、序实例上添加一个名为LuxuryCarInsurance的类,并且,该类要与其他的类一样能执行相应的功能。【添加代码】1、添加LuxuryCarInsurance类: public class LuxuryCarInsurance implements AutoInsurance private String description; public String getInsuranceDescription() description = LuxuryCarInsurance: nnLuxuryCarInsurance coverage pays for medical bills + lo

3、st wages, rehabilitation, treatment and/or + funeral costs for anyone injured or killed + by your car. Such coverage will also pay for + pain and suffering damages when a third + party successfully sues. ; return description; 2、添加LuxuryCarPolicyProducer类: public class LuxuryCarPolicyProducer impleme

4、nts PolicyProducer public AutoInsurance getPolicyObj() /Fruit factory() return new LuxuryCarInsurance(); 3、添加GUI: (1)public static final String LUXURYCAR = LuxuryCar Insurance; (2)cmbInsuranceType.addItem(LUXURYCAR); (3)if (type.equals(LUXURYCAR) pp=new LuxuryCarPolicyProducer(); 【实验结果】 【实验小结】使用工厂方法

5、访问并且初始化合适的类的对象,简化了应用程序,应用程序本身不再含有大量的条件语句判定何时选取哪个类。其次,工厂方法实现了一些特殊的某个类的机制,尤其是层次结构不同的类需要不同的初始化方法的时候。抽象工厂方法模式房屋信息【实验内容】 在例2.4中设计并且实现了豪华(Super)和中等(Medum)别墅(House)和公寓(Condo)的查询。要求在该设计的基础上,增加一个新的类SemiDetacher(半独立式楼宇),并且编写代码实现相应的查询功能。【添加代码】1、添加SemiDetacher类: public interface SemiDetacher public String getSe

6、miDetacherInfo(); public String getSemiDetacherFeatures(); 2、添加SuperSemiDetacher类: public class SuperSemiDetacher implements SemiDetacher private String name; public SuperSemiDetacher(String cName) name = cName; public String getSemiDetacherInfo() return superSemiDetacher.html; public String getSemi

7、DetacherFeatures() return Super SemiDetacher ; 3、添加MediumSemiDetacher类: public class MediumSemiDetacher implements SemiDetacher private String name; public MediumSemiDetacher(String cName) name = cName; public String getSemiDetacherInfo() return MediumSemiDetacher.html; public String getSemiDetacher

8、Features() return Medium SemiDetacher ; 4、添加BuildingFactory: public abstract SemiDetacher getSemiDetacher();5、添加MediumBuildingFactory: public SemiDetacher getSemiDetacher() return new MediumSemiDetacher(Medium SemiDetacher); 6、添加SuperBuildingFactory: public SemiDetacher getSemiDetacher() return new

9、SuperSemiDetacher(Super SemiDetacher); 7、添加GUI: (1)public static final String SEMIDETACHER = SemiDetacher; (2)cmbHouseType.addItem(SEMIDETACHER); (3)if (type.equals(AbstractFactoryGUI.SEMIDETACHER) SemiDetacher cd = bf.getSemiDetacher(); String fileNm = cd.getSemiDetacherInfo(); putHouseInfoToScreen

10、(fileNm); 【实验结果】 【实验小结】 当客户对象要从一个相关的产品组中创建一个对象,而没有必要知道到底要创建哪个对象时,可以使用抽象工厂模式。如果不使用抽象工厂模式,创建对象的条件语句将会出现在客户程序的许多地方,程序的克维护性差。抽象工厂模式帮助程序员避免了以上所述的重复的、复杂的条件语句,提供必要的创建对象的接口。 实验二组合模式空军指挥系统【实验内容】 在例3.3的设计中,添加一个空军大队(Wing)类,该类与Squadron、Group类是平行的,因此应该继承了AirUnit类。该类的写法与Squadron或者Group类是类似的,所不同的是一个Wing有216中类型的飞机。

11、【添加代码】1、添加Wing类: public class Wing extends AirUnit public static final String FEATURES = A Wing with 216 aircrafts; Airforce fighters = new Airforce162; Airforce bombers = new Airforce18; Airforce transporters= new Airforce18; Airforce eAircrafts = new Airforce18; public Wing() for(int k=0;k162;k+)

12、/ need 162 fighters for(int k=0;k18;k+) / need 18 bombers for(int k=0;k18;k+) / need 18 transporters for(int k=0;k=A)&(nStr.charAt(0) =Z)| (nStr.charAt(0) =a)&(nStr.charAt(0) =z) & (len=5) ) for(int m=0; m=0&nStr.charAt(m)=9) b+; if(m=0)&(Character.isLetter(nStr.charAt(m)=false) isValid=false; if(a!

13、=1) isValid=false; if(b=0) isValid=false; return isValid; else return false; 2、添加CusInfoValidator: public abstract boolean isValidEmailAddr(String EmailAddr);3、添加GUI: (1)private JTextField txtCustomerName, txtAddress,txtZip,txtCellPhone,txtSSN,txtEmailAddr; (2)private JLabel lblCustomerName, lblAddr

14、ess,lblZip, lblCellphone, lblSSN, lblEmailAddr; (3)txtEmailAddr=new JTextField(20); (4)lblEmailAddr= new JLabel(EmailAddr :); (5)UIPanel.add(lblEmailAddr); UIPanel.add(txtEmailAddr); (6)gridbag.setConstraints(lblEmailAddr, gbc); gbc.gridx = 1; gbc.gridy = 5; gridbag.setConstraints(txtEmailAddr, gbc)

15、; gbc.gridx = 0; gbc.gridy = 6; (7)public String getEmailAddr() return txtEmailAddr.getText(); (8)String emailaddr = getEmailAddr(); (9)if(cusInfo.isValidEmailAddr(emailaddr)=false) dataTextArea.append(nWrong format of EmailAddr.); else dataTextArea.append(nCorrect format of EmailAddr.); 【实验结果】 【实验小

16、结】 通过适配器,客户端可以调用同一接口,因而对客户端来说是透明的。这样做更简单、更直接、更紧凑;复用了现存的类,解决了现存类和复用环境要求不一致的问题;将目标类和适配者类解耦,通过引入一个适配器类重用现有的适配者类,而无需修改原有代码;一个对象适配器可以把多个不同的适配者类适配到同一个目标,也就是说,同一个适配器可以把适配者类和它的子类都适配到目标接口。对于对象适配器来说,更换适配器的实现过程比较复杂。实验三桥接模式几何立体体积【实验内容】在例3.14中的设计实验层次类部分中,添加Ellipsoid(椭球)类,并且实现针对椭球体积的计算。【添加代码】1、添加椭球类: public class

17、 Ellipsoid implements GeoForm private double aRadius; private double bRadius; private double cRadius; public Ellipsoid (double aRadius, double bRadius, double cRadius) this.aRadius = aRadius; this.bRadius = bRadius; this.cRadius = cRadius; public double computeVolume() double volume = 1.3333333*3.14

18、15926* aRadius* bRadius* cRadius; return volume; 2、添加GUI:(1)private JTextField txtEllipsoidRadius_a; private JTextField txtEllipsoidRadius_b; private JTextField txtEllipsoidRadius_c; (2)public static final String ELLIPSOID = Ellipsoid;(3)cmbGeoForm.addItem(ELLIPSOID);(4)else if(selection.equals(ELLI

19、PSOID) ) String a_radius = txtEllipsoidRadius_a.getText(); String b_radius = txtEllipsoidRadius_b.getText(); String c_radius = txtEllipsoidRadius_c.getText(); double a = Double.valueOf(a_radius); double b =Double.valueOf(b_radius); double c = Double.valueOf(c_radius); form = new Ellipsoid(a, b, c);

20、(5)else if(selection.equals(ELLIPSOID) ) displayNewGUI( getTypePanel(ELLIPSOID);(6)else if(type.equals(ELLIPSOID) JLabel lblRadius_a = new JLabel(Input Radius a); JLabel lblRadius_b = new JLabel(Input Radius b); JLabel lblRadius_c = new JLabel(Input Radius c); txtEllipsoidRadius_a = new JTextField(8

21、); txtEllipsoidRadius_b = new JTextField(8); txtEllipsoidRadius_c = new JTextField(8); GridBagLayout gridbag = new GridBagLayout(); typePanel.setLayout(gridbag); GridBagConstraints gbc = new GridBagConstraints(); typePanel.add(lblRadius_a); typePanel.add(lblRadius_b); typePanel.add(lblRadius_c); typ

22、ePanel.add(txtEllipsoidRadius_a); typePanel.add(txtEllipsoidRadius_b); typePanel.add(txtEllipsoidRadius_c); typePanel.add(lblMeasure); typePanel.add(cmbMeasure); gbc.insets.top = 5; gbc.insets.bottom = 5; gbc.insets.left = 1; gbc.insets.right = 8; gbc.anchor = GridBagConstraints.WEST; gbc.gridx = 0;

23、 gbc.gridy = 0; gridbag.setConstraints(lblRadius_a, gbc); gbc.gridx = 1; gbc.gridy = 0; gridbag.setConstraints(txtEllipsoidRadius_a, gbc); gbc.gridx = 0; gbc.gridy = 1; gridbag.setConstraints(lblRadius_b, gbc); gbc.gridx = 1; gbc.gridy = 1; gridbag.setConstraints(txtEllipsoidRadius_b, gbc); gbc.grid

24、x = 0; gbc.gridy = 2; gridbag.setConstraints(lblRadius_c, gbc); gbc.gridx = 1; gbc.gridy = 2; gridbag.setConstraints(txtEllipsoidRadius_c, gbc); gbc.gridx = 0; gbc.gridy = 3; gridbag.setConstraints(lblMeasure, gbc); gbc.gridx = 1; gbc.gridy = 3; gridbag.setConstraints(cmbMeasure, gbc); 【实验结果】【实验小结】

25、通过这次实验我们大概理解了桥接模式,通过关联“抽象层次类”与“具体层次类”这一桥梁,将表示两个维度的层类(数据结构)粘贴在一起,形成更大的数据结构,而这种变化又不会对现有的类产生影响,这种思路的终极想法是将软件设计的抽象部分与实现部分分离,使它们都可以独立的变化。访问者模式计算机部件销售软件【实验内容】 在例4.5的设计中添加一个类SoundBox。该类实现接口ComputerParts,并且其他的计算机部件的类的结构类似。【添加代码】1、添加SoundBox类: public class SoundBox implements ComputerParts public static final String NAME = SoundBox; private final double PRICE = 127.00; public static final String FEATURES = SoundBox. X3K; public String getName() return NAME; public double getPrice() return PRICE; public String getDescription() return FEATURES; pu

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2