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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

设计模式上机实验一实验报告.docx

1、设计模式上机实验一实验报告设计模式实验一实 验 报告 书专业班级 软 件 0703 学 号 3901070324 姓 名 吉亚云 指导老师 刘 伟 时 间 2010年3月 27日 中南大学软件学院实验一 设计模式上机实验一一、实验目的熟练使用PowerDesigner绘制类图,构造系统的静态结构模型;使用PowerDesigner和任意一种面向对象编程语言实现几种常见的设计模式,包括简单工厂模式、工厂方法模式、抽象工厂模式、原型模式、单例模式、适配器模式、桥接模式和组合模式。二、实验要求1. 使用PowerDesigner绘制标准的UML类图;2. 正确无误绘制简单工厂模式、工厂方法模式、抽象

2、工厂模式、原型模式、单例模式、适配器模式、桥接模式和组合模式的模式结构图;3. 使用任意一种面向对象编程语言实现简单工厂模式、工厂方法模式、抽象工厂模式、原型模式、单例模式、适配器模式、桥接模式和组合模式,代码运行正确无误。三、实验步骤1. 熟悉PowerDesigner11的常用功能;2. 使用PowerDesigner绘制类图;3. 使用PowerDesigner绘制简单工厂模式结构图并用面向对象编程语言实现该模式;4. 使用PowerDesigner绘制工厂方法模式结构图并用面向对象编程语言实现该模式;5. 使用PowerDesigner绘制抽象工厂模式结构图并用面向对象编程语言实现该模

3、式;6. 使用PowerDesigner绘制原型模式结构图并用面向对象编程语言实现该模式;7. 使用PowerDesigner绘制单例模式结构图并用面向对象编程语言实现该模式;8. 使用PowerDesigner绘制适配器模式结构图并用面向对象编程语言实现该模式;9. 使用PowerDesigner绘制桥接模式结构图并用面向对象编程语言实现该模式;10. 使用PowerDesigner绘制组合模式结构图并用面向对象编程语言实现该模式。四、实验报告要求1. 绘制实例场景的类图;2. 提供简单工厂模式结构图及实现代码;3. 提供工厂方法模式结构图及实现代码;4. 提供抽象工厂模式结构图及实现代码;

4、5. 提供原型模式结构图及实现代码;6. 提供单例模式结构图及实现代码;7. 提供适配器模式结构图及实现代码;8. 提供桥接模式结构图及实现代码;9. 提供组合模式结构图及实现代码。五、实验结果使用PowerDesigner绘制类图;用PowerDesigner和任意一种面向对象编程语言实现简单工厂模式、工厂方法模式、抽象工厂模式、原型模式、单例模式、适配器模式、桥接模式和组合模式,包括根据实例绘制模式结构图、编写模式实现代码,运行并测试模式实例代码。(1) 类图某音像图书出租公司欲开发一个音像图书租赁信息系统,处理日常音像图书租借业务。该系统将记录所有的图书信息、唱碟信息、用户信息和用户租借

5、信息。现决定采用面向对象分析和设计方法来开发此系统,经过初步分析,设计人员定义了如下初始实体类: Book(图书)类属性:no(编号)、title(标题)、author(作者)、isbn(书号)、press(出版社)、price(价格)。方法:每个属性的get()方法和set()方法。 Disc(唱碟)类属性:no(编号)、title(标题)、singer(歌手)、producer(制作公司)、price(价格)。方法:每个属性的get()方法和set()方法。 Customer(客户)类属性:cno(客户编号)、name(姓名)、address(地址)、tel(电话)。方法:每个属性的get

6、()方法和set()方法。 LoanItem(可租项目)类记录Book和Disc的共有属性和方法。 RentHistory(租借历史记录)类属性:rno(历史记录编号)、hireTime(出租时间)、returnTime(归还时间)、cno(客户编号)、no(租借图书或唱碟编号)、deposit(押金金额)。方法:每个属性的get()方法和set()方法。在进一步分析之后,需要在LoanItem类中定义一个集合来存储每一种图书或唱碟的所有租借历史记录。根据以上信息,绘制对应的实体类类图。(2) 简单工厂模式使用简单工厂模式设计一个可以创建不同几何形状(Shape)的绘图工具类,如可创建圆形(C

7、ircle)、方形(Rectangle)和三角形(Triangle) 对象,每个几何图形都要有绘制draw()和擦除erase()两个方法,要求在绘制不支持的几何图形时,提示一个UnsupportedShapeException,绘制类图并编程实现。/抽象图形interface Shape void draw(); void erase(); class Circle implements Shape public void draw() System.out.println(Circle drawing!); public void erase() System.out.println(Ci

8、rcle eraseing!); class Rectangle implements Shape public void draw() System.out.println(Rectangle drawing!); public void erase() System.out.println(Rectangle eraseing!); class Triangle implements Shape public void draw() System.out.println(Triangle drawing!); public void erase() System.out.println(T

9、riangle eraseing!); /工厂class ShapeFactory /工厂方法 factory method public static Shape produceShape(String shapeName) throws UnsupportedShapeException if(shapeName.equalsIgnoreCase(circle) return new Circle(); else if(shapeName.equalsIgnoreCase(rectangle) return new Rectangle(); else if(shapeName.equals

10、IgnoreCase(triangle) return new Triangle(); else throw new UnsupportedShapeException(); class UnsupportedShapeException extends Exception public String toString() return 绘制不支持该几何图形!; class ShapeClient public static void main(String a) Shape circle = null; try circle = ShapeFactory.produceShape(circl

11、e); catch (UnsupportedShapeException e) e.printStackTrace(); circle.draw(); circle.erase(); Shape triangle = null; try triangle = ShapeFactory.produceShape(triangle); catch (UnsupportedShapeException e) e.printStackTrace(); triangle.draw(); triangle.erase(); (3) 工厂方法模式海尔工厂(Haier)生产海尔空调(HaierAirCondi

12、tion),美的工厂(Midea)生产美的空调(MideaAirCondition) 。使用工厂方法模式描述该场景,绘制类图并编程实现。interface AirCondition void work();interface AirConditionFactory AirCondition produceAirCondition();class HaierAirCondition implements AirCondition public void work() System.out.println(HaierAirCondition working!); class MideaAirCon

13、dition implements AirCondition public void work() System.out.println(MideaAirCondition working!); class HaierAirConditionFactory implements AirConditionFactory public HaierAirCondition produceAirCondition() System.out.println(HaierAirCondition produced!); return new HaierAirCondition(); class MideaA

14、irConditionFactory implements AirConditionFactory public MideaAirCondition produceAirCondition() System.out.println(MideaAirCondition produced!); return new MideaAirCondition(); class AirConditionClient public static void main(String a) AirConditionFactory cf; AirCondition airCondition; cf=(AirCondi

15、tionFactory)XMLUtil.getBean();/这句代码中调用XML配置文件中的getBean函数,实现从XML配置文件中读取类的名字,创建该类的对象,最后返回给调用getBean()方法的Java程序中。 airCondition=cf.produceAirCondition(); airCondition.work(); (4) 抽象工厂模式电脑配件生产工厂生产内存、CPU等硬件设备,这些内存、CPU的品牌、型号并不一定相同,根据下面的“产品等级结构-产品族”示意图,使用抽象工厂模式实现电脑配件生产过程并绘制相应的类图,绘制类图并编程实现。interface CPU void

16、 discribe();interface RAM void discribe();class PcCPU implements CPU public void discribe() System.out.println(PcCPU); class MacCPU implements CPU public void discribe() System.out.println(MacCPU); class PcRAM implements RAM public void discribe() System.out.println(PcRAM); class MacRAM implements R

17、AM public void discribe() System.out.println(MacRAM); interface ComputerPartsFactory CPU produceCPU(); RAM produceRAM(); class PcFactory implements ComputerPartsFactory public PcCPU produceCPU() System.out.println(PcCPU produced!); return new PcCPU(); public PcRAM produceRAM() System.out.println(PcR

18、AM produced!); return new PcRAM(); class MacFactory implements ComputerPartsFactory public MacCPU produceCPU() System.out.println(MacCPU produced!); return new MacCPU(); public MacRAM produceRAM() System.out.println(MacRAM produced!); return new MacRAM(); class ComputerPartsClient public static void

19、 main(String a) ComputerPartsFactory factory; CPU cpu; RAM ram; factory=(ComputerPartsFactory)XMLUtil.getBean(); cpu=factory.produceCPU(); cpu.discribe(); ram=factory.produceRAM(); ram.discribe(); (5) 原型模式设计一个客户类Customer ,其中客户地址存储在地址类Address中,用浅克隆和深克隆分别实现Customer对象的复制并比较这两种克隆方式的异同。绘制类图并编程实现。class Ad

20、dress implements Serializable public void displayAddress() System.out.println(address.); /浅克隆的Customer类class Customer implements Cloneable private Address address=null; public Address getAddress() return address; public void setAddress(Address address) this.address = address; public Object clone() C

21、ustomer clone=null; try clone=(Customer)super.clone(); catch(CloneNotSupportedException e) System.out.println(Clone failure!); return clone; /深克隆的Customer类class CustomerDeepClone implements Cloneable,Serializable private Address address=null; public Address getAddress() return address; public void s

22、etAddress(Address address) this.address = address; public Object clone() Customer clone=null; try /使用流来进行处理 ByteArrayOutputStream bao=new ByteArrayOutputStream(); ObjectOutputStream oos=new ObjectOutputStream(bao); oos.writeObject(this); ByteArrayInputStream bis=new ByteArrayInputStream(bao.toByteAr

23、ray(); ObjectInputStream ois=new ObjectInputStream(bis); return(ois.readObject(); catch (IOException e) e.printStackTrace(); catch (ClassNotFoundException e) e.printStackTrace(); return clone; class CustomerClient public static void main(String a) Customer customer=new Customer(); customer.setAddres

24、s(new Address(); Customer copyCustomer=(Customer)customer.clone(); System.out.println(customer=copyCustomer?); System.out.println(customer=copyCustomer); System.out.println(customer.getAddress=copyCustomer.getAddress?); System.out.println(customer.getAddress()=copyCustomer.getAddress(); CustomerDeep

25、Clone customerDeepClone=new CustomerDeepClone(); customerDeepClone.setAddress(new Address(); CustomerDeepClone copyCustomerDeepClone=(CustomerDeepClone) customerDeepClone.clone(); System.out.println(customerDeepClone=copyCustomerDeepClone?); System.out.println(customerDeepClone=copyCustomerDeepClone

26、); System.out.println(customerDeepClone.getAddress=copyCustomerDeepClone.getAddress?); System.out.println(customerDeepClone.getAddress()=copyCustomerDeepClone.getAddress(); 运行结果:(6) 单例模式用懒汉式单例实现在某系统运行时,其登录界面类LoginForm只能够弹出一个,如果第二次实例化该类则提示“程序已运行”。绘制类图并编程实现。class LoginForm extends JFrame private stati

27、c LoginForm uniqueInstance=null; private LoginForm() /设置标题 this.setTitle(LoginForm); this.setSize(400, 300); /设置关闭按钮的事件 this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); /设置是否可见 this.setVisible(true); public static LoginForm getInstance() if(uniqueInstance=null) uniqueInstance=new LoginForm();

28、 else JOptionPane.showMessageDialog(null, LoginFrame已经在运行!); return uniqueInstance; class LoginFormClient public static void main(String a) LoginForm s1=null,s2=null; s1=LoginForm.getInstance(); s2=LoginForm.getInstance(); System.out.println(s1=s2?); System.out.println(s1=s2); 运行结果:(7) 适配器模式现有一个接口DataOperation定义了排序方法sort(int) 和查找方法search(int, int),已知类QuickSort的quickSort(int)方法实现了快速排序算法,类BinarySearch 的binarySearch(int, int)方法实现了二分查找算法

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1