欢迎来到天天文库
浏览记录
ID:22208483
大小:219.00 KB
页数:8页
时间:2018-10-27
《设计模式实验1报告oo设计原则实训》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、ShenzhenUniversity深圳大学实验报告课程名称:软件体系结构实验项目名称:OO设计原则实训学院:计算机与软件学院专业:软件工程指导教师:报告人:学号:班级:实验时间:2014/4/5一、实验目的与要求:熟练使用面向对象设'H•原则对系统进行重构。选择合适的ifif向对象设计原则对系统进行重构,正确无误绘制重构之后的类图。提供東构之后的类图和代码,简要说明東构过程中所运用的面向对象设•原则二、实验内容使用面向对象设计原则对系统进行重构。辅助使用的工具可以是Microsoftvisio或Power
2、Designer或IBMRSA等,可根据个人情况自巾选择使用自己熟用的。在某图形库API中提供了多种矢量图模板,用户可以基于这些矢量图创建不同的显示图形,图形库没计人员设计的初始类图如下所示:在该图形库屮,毎个图形类(如Circle、Triangle等)的init()方法用于初始化所创逮的图形,setColorO方法川于给图形设置边框颜色,川1()方法川于给图形设置填充颜色,setSize()方法川于设置图形的大小,displayO方法用于显示图形。客户类(Client)在使用该图形库时发现存在如下W题:①
3、由于在创建窗U时每次只耑要使用图形库中的一种图形,因此在更换图形时耑要修改客户类源代码;②在图形库巾增加并使用新的图形时耑要修改客户类源代码;③客户类在每次使川图形对象之前盂要先创建图形对象,有些图形的创建过程较为复杂,导致客户类代码冗长且难以维护。现耑要根据面向对象设计原则对该系统进行重构,要求如下:①隔离图形的创建和使川,将图形的创建过程封装在专门的类屮,客户类在使川图形时无须直接创建图形对象,甚至不耑要关心具体图形类类名;②客户类能够方便地更换图形或使用新增图形,无须针对具体图形类编程,符合开闭原则。
4、绘制重构之后的类图并说明在重构过程中所运用的而14对象设计原则。三、实验步骤简要说明关键步骤,要特别体现出東构过程中用到面向对象设计原则的那些步骤。使用工厂方法模式,将图形的创建封装在工厂类中,客户类使用工厂类和形状类的抽象接口,三个形状的具体类从形状类接口实现而来,三个工厂类从工厂类接口实现而来,工厂类完成图形的创建,客户类不必关心图形的具体创建方法。要想增加新图形,只需要增加新的图形类和工厂类,不必修改代码,符合开闭原则,客户类只依赖于抽象类,符合依赖倒转原则。四、实验结果I.重构后的类图:2.重构过程
5、屮使用的OO设计原则及简要说明:要增加新图形,只需要增加新的图形类和工厂类,不必修改代码,符合开闭原则;客户类只依赖于抽象类,符合依赖倒转原则。3.重构后的代码抽象形状类:PublicinterfaceShape{Publicvoidinit();PublicvoidsetColor();Publicvoidfill();PublicvoidsetSize();Publicvoiddisplay();}具体形状类CirclePublicclassCircleimplementsShape{Publicvoi
6、dinit(){}PublicvoidsetColor(){}Publicvoidfill(){}PublicvoidsetSize(){}Publicvoiddisplay(){}}具体形状类TrianglePublicclassTriangleimplementsShape{Publicvoidinit(){}PublicvoidsetColor(){)Publicvoidfill(){}PublicvoidsetSize(){}Publicvoiddisplay(){}}具体形状类RectangleP
7、ublicclassRectangleimplementsShape{Publicvoidinit(){)PublicvoidsetColor(){)Publicvoidfill(){}PublicvoidsetSize(){}Publicvoiddisplay(){}抽象工/•类ShapeFactory:PublicinterfaceShapeFactory{PublicShapeProduceShape();}具体工厂类CircleFactory:PublicclassCircIeFactoryimpl
8、ementsShapeFactory{PublicShapeProduceShape(){ReturnnewCircle();}}具体工厂类TriangleFactory:PublicclassTriangleFactoryimplementsShapeFactory{PublicShapeProduceShape(){ReturnnewTriangle();)}具体丁厂类RectangleFactory:Pub
此文档下载收益归作者所有