您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > 设计模式上机实验二实验报告
1设计模式实验二实验报告书专业班级软件0703学号3901070324姓名吉亚云指导老师刘伟时间2010年4月24日中南大学软件学院2实验二设计模式上机实验二一、实验目的使用PowerDesigner和任意一种面向对象编程语言实现几种常用的设计模式,加深对这些模式的理解,包括装饰模式、外观模式、代理模式、职责链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式和模板方法模式。二、实验内容使用PowerDesigner和任意一种面向对象编程语言实现装饰模式、外观模式、代理模式、职责链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式和模板方法模式,包括根据实例绘制相应的模式结构图、编写模式实现代码,运行并测试模式实例代码。三、实验要求1.正确无误绘制装饰模式、外观模式、代理模式、职责链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式和模板方法模式的模式结构图;2.使用任意一种面向对象编程语言实现装饰模式、外观模式、代理模式、职责链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式和模板方法模式,代码运行正确无误。四、实验步骤1.使用PowerDesigner绘制装饰模式结构图并用面向对象编程语言实现该模式;2.使用PowerDesigner绘制外观模式结构图并用面向对象编程语言实现该模式;3.使用PowerDesigner绘制代理模式结构图并用面向对象编程语言实现该模式;4.使用PowerDesigner绘制职责链模式结构图并用面向对象编程语言实现该模式;5.使用PowerDesigner绘制命令模式结构图并用面向对象编程语言实现该模式;6.使用PowerDesigner绘制迭代器模式结构图并用面向对象编程语言实现该模式;7.使用PowerDesigner绘制观察者模式结构图并用面向对象编程语言实现该模式;8.使用PowerDesigner绘制状态模式结构图并用面向对象编程语言实现该模式;9.使用PowerDesigner绘制策略模式结构图并用面向对象编程语言实现该模式;10.使用PowerDesigner绘制模板方法模式结构图并用面向对象编程语言实现该模式。五、实验报告要求1.提供装饰模式结构图及实现代码;2.提供外观模式结构图及实现代码;3.提供代理模式结构图及实现代码;4.提供职责链模式结构图及实现代码;35.提供命令模式结构图及实现代码;6.提供迭代器模式结构图及实现代码;7.提供观察者模式结构图及实现代码;8.提供状态模式结构图及实现代码;9.提供策略模式结构图及实现代码;10.提供模板方法模式结构图及实现代码。六、实验结果(1)装饰模式某图书管理系统中,书籍类(Book)具有借书方法borrowBook()和还书方法returnBook()。现需要动态给书籍对象添加冻结方法freeze()和遗失方法lose()。使用装饰模式设计该系统,绘制类图并编程实现。0..10..*Book++borrowBook()returnBook():void:voidBookDirector{abstract}-book:Book+++ConstructorImplementImplementBookDirector(Bookbook)borrowBook()returnBook():void:voidMyBook++ImplementImplementborrowBook()returnBook():void:voidNewBook+++ConstructorNewBook(Bookbook)freeze()lose():void:voidpackageDirectorPattern;interfaceBook{voidborrowBook();voidreturnBook();}finalclassMyBookimplementsBook{publicvoidborrowBook(){System.out.println(MyBookborrowing!);}4publicvoidreturnBook(){System.out.println(MyBookreturning!);}}abstractclassBookDirectorimplementsBook{privateBookbook;publicBookDirector(Bookbook){System.out.println(Bookdirectoring!);this.book=book;}publicvoidborrowBook(){book.borrowBook();}publicvoidreturnBook(){book.returnBook();}}classNewBookextendsBookDirector{publicNewBook(Bookbook){super(book);System.out.println(BookchangedtoNewBook!);}publicvoidfreeze(){System.out.println(Bookfreezing!);}publicvoidlose(){System.out.println(Booklost!);}}publicclassBookDirectorClient{publicstaticvoidmain(Stringa[])5{//半透明Bookbook=newMyBook();NewBooknewBook=newNewBook(book);newBook.borrowBook();newBook.returnBook();newBook.freeze();newBook.lose();}}运行结果:(2)外观模式在电脑主机(Mainframe)中,只需要按下主机的开机按钮(on()),即可调用其他硬件设备和软件的启动方法,如内存(Memory)的自检(check()),CPU的运行(run()),硬盘(HardDisk)的读取(read()),操作系统(OS)的载入(load())等,如果某一过程发生错误则电脑启动失败。使用外观模式模拟该过程,绘制类图并编程实现。0..10..*0..10..*0..10..*0..10..*MainFrame----memorycpudiskos:Memory:CPU:HardDisk:OS++on()off():void:voidMemory++check()off():void:voidCPU++run()off():void:voidHardDisk++read()off():void:voidOS++load()off():void:voidpackageFacadePattern;classMainframe{privateMemorymemory;privateCPUcpu;privateHardDiskdisk;6privateOSos;publicMainframe(){memory=newMemory();cpu=newCPU();disk=newHardDisk();os=newOS();}publicvoidon(){memory.check();cpu.run();disk.read();os.load();}publicvoidoff(){memory.off();cpu.off();disk.off();os.off();}}classMemory{publicvoidcheck(){System.out.println(Memorychecking!);}publicvoidoff(){System.out.println(Memoryoff!);}}classCPU{publicvoidrun(){7System.out.println(CPUrunning!);}publicvoidoff(){System.out.println(CPUoff!);}}classHardDisk{publicvoidread(){System.out.println(HardDiskreading!);}publicvoidoff(){System.out.println(HardDiskoff!);}}classOS{publicvoidload(){System.out.println(OSloading!);}publicvoidoff(){System.out.println(OSoff!);}}publicclassComputerFacadeClient{publicstaticvoidmain(Stringargs[]){Mainframemainframe=newMainframe();mainframe.on();System.out.println(-----------------------);mainframe.off();8}}运行结果:(3)代理模式应用软件所提供的桌面快捷方式是快速启动应用程序的代理,桌面快捷方式一般使用一张小图片来表示(Picture),通过调用快捷方式的run()方法将调用应用软件(Application)的run()方法。使用代理模式模拟该过程,绘制类图并编程实现。0..10..*Software+run():voidProxy-app:Application+Implementrun():voidApplication+Implementrun():voidpackageProxyPattern;interfaceSoftware{voidrun();}classApplicationimplementsSoftware{publicvoidrun(){System.out.println(Applicationisrunning!);;}}9classPictureimplementsSoftware{privateApplicationapp=newApplication();publicvoidrun(){app.run();}}publicclassFastwayProxyClient{publicstaticvoidmain(Stringa[]){Softwareproxy=newPicture();proxy.run();}}运行结果:(4)职责链模式某物资管理系统中物资采购需要分级审批,主任可以审批1万元及以下的采购单,部门经理可以审批5万元及以下的采购单,副总经理可以审批10万元及以下的采购单,总经理可以审批20万元及以下的采购单,20万元以上的采购单需要开会确定。现使用职责链模式设计该系统,绘制类图并编程实现。10Leader--namesuccessor:String:Leader+++ConstructorhandleRequest(ShoppingRequestrequest)setSuccessor(Leadersuccessor)Leader(Stringname):void:voidShoppingRequest--shoppingReasonbillMoney:String:double++++GetterSetterGetterSettergetBillMoney()setBillMoney(doublenewBillMoney)getShoppingReason()setShoppingReason(StringnewShoppingReason):double:void:String:voidDirector++OverrideConstructorhandleRequest(ShoppingRequestrequest)Director(Stringname):voidDepartmentManager++ConstructorOverrideDepartmen
本文标题:设计模式上机实验二实验报告
链接地址:https://www.777doc.com/doc-4398502 .html