中南大学设计模式实验2_第1页
中南大学设计模式实验2_第2页
中南大学设计模式实验2_第3页
中南大学设计模式实验2_第4页
中南大学设计模式实验2_第5页
免费预览已结束,剩余38页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件体系结构实验报告项目名称设计模式实验一专业班级软件1501学号姓名实验成绩:批阅教师:2017 年12月12日实验2设计模式实验一实验学时:4每组人数:1实验类型:3(1 :基础性2:综合性3:设计性4 :研究性)实验要求:1(1:必修2:选修3:其它)实验类别:3(1:基础2:专业基础3:专业4:其它)、实验目的1 熟练使用面向对象设计原则对系统进行重构;2. 熟练使用 PoWerDeSigner和任意一种面向对象编程语言实现几种常见的创建型设计 模式和结构型设计模式,包括简单工厂模式、工厂方法模式、抽象工厂模式、单例模式、适 配器模式、桥接模式和组合模式,理解每一种设计模式的模式动机,

2、掌握模式结构,学习如 何使用代码实现这些模式。、实验内容1 在某图形库 APl中提供了多种矢量图模板,用户可以基于这些矢量图创建不同的显示图形,图形库设计人员设计的初始类图如下所示:+ini t ():void+SetColor ():void+fill ():void+SetSiZe ():void+display ():voidCirCIeTrian gle+in it ():void+SetColor ():void+fill ():void+SetSiZe ():void+display ():Void+in it ():void+SetColor ():void+fill ():vo

3、id+SetSiZe ():void+display ():voidReCta ngleClie nt在该图形库中,每个图形类(如 CirCIe、Triangle等)的init()方法用于初始化所创建的 图形,setColor()方法用于给图形设置边框颜色,fill()方法用于给图形设置填充颜色,SetSiZe() 方法用于设置图形的大小,display()方法用于显示图形。客户类(Client)在使用该图形库时发现存在如下问题: 由于在创建窗口时每次只需要使用图形库中的一种图形,因此在更换图形时需要修 改客户类源代码; 在图形库中增加并使用新的图形时需要修改客户类源代码; 客户类在每次使用图

4、形对象之前需要先创建图形对象,有些图形的创建过程较为复 杂,导致客户类代码冗长且难以维护。现需要根据面向对象设计原则对该系统进行重构,要求如下: 隔离图形的创建和使用,将图形的创建过程封装在专门的类中,客户类在使用图形时无须直接创建图形对象,甚至不需要关心具体图形类类名; 客户类能够方便地更换图形或使用新增图形,无须针对具体图形类编程,符合开闭原则。绘制重构之后的类图并说明在重构过程中所运用的面向对象设计原则。2. 在某RPG游戏中使用简单工厂模式创建游戏角色,该游戏可根据用户所选择的参数来创建不同的角色(RoIe),例如参数为"an gel ”时创建一个天使角色,参数为"

5、hero ”时创建一个英雄角色,参数为"WitCh ”时创建一个女巫角色。绘制类图并使用JaVa语言编程模拟实现。3. 现需要设计一个程序来读取多种不同类型的图片格式,针对每一种图片格式都设计一个图片读取器(ImageReader),如GIF图片读取器(GifReader)用于读取GIF格式的图片、JPG 图片读取器(JPgReader)用于读取JPG格式的图片。图片读取器对象通过图片读取器工厂 ImageReaderFaCtOry来创建,ImageReaderFaCtOry是一个抽象类,用于定义创建图片读取器 的工厂方法,其子类GifReaderFaCtOry和JPgReaderF

6、aCtory用于创建具体的图片读取器对象。 使用工厂方法模式设计该程序,绘制类图并编程模拟实现。需充分考虑系统的灵活性和可扩 展性。4. 某系统为了改进数据库操作的性能,用户可以自定义数据库连接对象Connection和语句对象 Stateme nt,针对不同类型的数据库提供不同的连接对象和语句对象,例如提供OraCIe或MySQL专用连接类和语句类,而且用户可以通过配置文件等方式根据实际需要动 态更换系统数据库。使用抽象工厂模式设计该系统,要求绘制对应的类图并使用JaVa语言编程模拟实现。5. 使用单例模式的思想实现多例模式(MUltitOn),确保系统中某个类的对象只能存在有限个,例如两个

7、或三个,设计并编写代码实现一个多例类。6. 使用单例模式设计一个多文档窗口(注:在 JaVa AWT/Swing开发中可使用 JDeSktOPPane和JlnternalFrame来实现),要求在主窗体中某个内部子窗体只能实例化一次, 即只能弹出一个相同的子窗体,如下图所示,编程实现该功能。子宙体Ef国竝击t-I-内都si体(注:用C#或C+实现类似功能也可以)7. 现有一个接口 DataoPeration 定义了排序方法 sort(int)和查找方法 SearCh(int, int),已知类 QUiCkSOrt的quickSort(int)方法实现了快速排序算法,类BinarySearch的

8、binarySearch(int, int)方法实现了二分查找算法。试使用适配器模式设计一个系统,在不修 改源代码的情况下将类 QUiCkSOrt和类BinarySearch的方法适配到 DataOPeratiOn接口中。绘 制类图并编程实现。(要求实现快速排序和二分查找,使用对象适配器实现)8. 空客(AirbUS)、波音(Boeing)和麦道(McDonnell-Douglas)都是飞机制造商,它们都生 产载客飞机(PaSSenger Plane和载货飞机(Cargo Plane)。现需要设计一个系统,描述这些飞机 制造商以及它们所制造的飞机种类。绘制类图并编程模拟实现。9. 某移动社交软

9、件欲增加一个群组(GrOUP)功能。通过设置,用户可以将自己的动态信息,包括最新动态、新上传的视频以及分享的链接等,分享给某个特定的成员(Member),也可以分享给某个群组中的所有成员;用户可以将成员添加至某个指定的群组;此外,还允许用户在一个群组中添加子群组,以便更加灵活地实现面向特定人群的信息共享。选择一种合适的设计模式来设计该群组功能,要求给出该模式的名称及定义,结合场景绘制相应的结构图并编程模拟实现(类名、方法名和属性名可自行定义)。10. 某教育机构组织结构如下图所示:在该教育机构的 OA系统中可以给各级办公室下发公文,试采用组合模式设计该机构的组织结构,绘制相应的类图并编程模拟实

10、现,在客户端代码中模拟下发公文。三、实验要求1. 选择合适的面向对象设计原则对系统进行重构,正确无误地绘制重构之后的类图;2. 结合实例,正确无误地绘制简单工厂模式、工厂方法模式、抽象工厂模式、单例模式、适配器模式、桥接模式和组合模式的模式结构图;3. 使用任意一种面向对象编程语言实现简单工厂模式、工厂方法模式、抽象工厂模式、 单例模式、适配器模式、桥接模式和组合模式实例,代码运行正确无误。四、实验步骤1. 选择合适的面向对象设计原则对系统进行重构,使用PoWerDeSigner绘制重构之后的类图;2. 结合实例,使用POWerDeSigner绘制简单工厂模式实例结构图并用面向对象编程语言 实

11、现该模式实例;3. 结合实例,使用POWerDeSigner绘制工厂方法模式实例结构图并用面向对象编程语言 实现该模式实例;4. 结合实例,使用POWerDeSigner绘制抽象工厂模式实例结构图并用面向对象编程语言 实现该模式实例;5. 结合实例,使用POWerDeSigner绘制多例模式实例结构图并用面向对象编程语言实现 该模式实例;6. 结合实例,使用POWerDeSigner绘制单例模式实例结构图并用面向对象编程语言实现 该模式实例。7. 结合实例,使用POWerDeSigner绘制适配器模式实例结构图并用面向对象编程语言实 现该模式实例;8. 结合实例,使用POWerDeSigner

12、绘制桥接模式实例结构图并用面向对象编程语言实现 该模式实例;9. 结合实例,使用POWerDeSigner绘制组合模式实例结构图并用面向对象编程语言实现 该模式实例。五、实验结果1.重构之后的类图:Clf: l.tf .-:CFF-I-L- lA WLCCcr Q faL 0E «K>i» 0shl*Iraid:rHi:«!.:£:« C : 1E<L5 0: ZuViii veil*1:1 0CiiIC L Ii 冲血 o : vil"*I<下、Trik-CaCLJPLiir Q .LiIA3*! IJ . IeS

13、SlI重构过程中所使用的面向对象设计原则及简要说明:根据题意采用了工厂方法模式,所谓工厂模式则是定义一个用于创建对象的接口,但是让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到子类。使用了开闭原则,单一职责原则。2.类图:¾ I f*弭丸"tfcQ> 3-tr3 tfpJ : BOlRAt4 <n5TMr?alfr ¢)display Q : *idT!i3trujcto>> fro 04L3play C) : *old.T d5pia Q:BidHTlAih<<truct>> KjtCh C)d3sp

14、lj 0 : Ld¥实现代码:代码颜色使用黑色,字体使用TimeS NeW Roman 或Arial,字号为五号,如Role 类:PUbIiC abstract class Role PUbIiC abstract void display();Angle 类:PUbliC class An gle exte nds Role PUbIiC An gle()PUbIiC void display()SyStem.out.pri ntln ("a ngle");Hero 类:PUbIiC class Hero exte nds Role PUbIiC Hero()P

15、UbIiC void display()SyStem.out.pri ntln ("hero");WitCh 类:PUbIiC class WitCh exte nds Role PUbIiCWitCh()PUbIiC void display()SyStem.out.pri ntl n("witch");RoleFaCtory 类:PUbliC class RoleFactory PUbIiC StatiC Role getRole(String type)Role role = nu II;if (type.equalslg no reCase(&q

16、uot;a ngle") role = new An gle();if (type.equalsIg no reCase("witch") role = new WitCh();if (type.equalsIg no reCase("Hero") role = new Hero();return role;Main类(客户端):PUbliC class Mai n PUbliC StatiC Void main(String args) Role role;role= RoleFaCtory.getRole("hero")

17、;if (role=nu ll)SyStem.out.println("创建角色失败请检查参数");elserole.display();/SyStem.out.pri ntl n( "Hello World!");3.类图:a <i-if?EaiK-:62ts住 0: viT ItIL *实现代码:ImageReadeFaCtary 类:PUbliC abstract class ImageReaderFaCtOry PUbliC abstract ImageReader CreateImageReadeer();GifReaderFaCtOry

18、 类:PUbIiC class GifReaderFaCtOry exte nds ImageReaderFaCtOry PUbIiC ImageReader CreateImageReadeer() GifReader gifReader = new GifReader(); retur n gifReader;JPgReaderFaCtOry 类:PUbIiC class JPgReaderFaCtOry exte nds ImageReaderFaCtOry PUbIiC ImageReader CreateImageReadeer() JPgReader jpgReader = new

19、 JPgReader();retur n jpgReader;ImageReader 类:PUbIiC abstract class ImageReader PUbIiC void readImage()GifReader 类:PUbIiC class GifReader exte nds ImageReaderPUbIiC void readImage()SyStem.out.println("通过 GifReader 读取图片");JPgReader 类:PUbliC class JPgReader exte nds ImageReaderPUbIiC void rea

20、dImage()SyStem.out.println("通过 JPgReader读取图片");XMLUtil 类:import org.w3c.dom.Docume nt;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import javax.xml.parsers.Docume ntBuilder;import javax.xml.parsers.Docume ntBuilderFactory;import java.io.File;PUbIiC class XMLUtiI ZZ该方法用于从XML配置文件中提取具体

21、类类名,并返回一个实例对象PUbIiC StatiC ObjeCt getBea n() throws EXCePti On /创建DOM文档对象DOCUme ntBuilderFactorydocume ntBuilderFactoryDOCUme ntBuilderFactory .newln Sta nce();DOCUme ntBuilderdocume ntBuilderdocume ntBuilderFactory .n ewDocume ntBuilder();DOCUme nt docume nt;document = documentBuilder.parse(new Fil

22、e("cOnfig.xml");/获取包含类名的文本结点NOdeLiSt no deList = docume nt.getEleme ntsByTagName("imageType");Node imageTypeNode = no deList.item(0).getFirstChild();String imageType = imageTypeNode.getNodeV alue().trim();/通过类名生成实例对象并将其返回Class clazz = Class.forName(imageType+"ReaderFactory&q

23、uot;);ObjeCt ObjeCt = clazz .newln Sta nce();return object;Main类(客户端):PUbliC class Mai n PUbliC StatiC Void main(String args) ImageReaderFaCtory imageReaderFactory = nu II;ImageReader imageReader;try imageReaderFactory = (ImageReaderFaCtOry)XMLUtil.getBea n(); CatCh (EXCePti On e) e.pri ntStackTrace

24、();imageReader = imageReaderFactory.createImageReadeer(); imageReader.readImage();4.类图: 5aw*m3 -r d3baM,cMT0 MLUDI0 ¾ BtteS WfimertIQl ¾qCPclHEtaMJnani:Q sfftrEBJ vd0© h CWneCUOnuVd dA MHjEinHIq) VDhlCI h MtnrtDj 心G W ulr<5irlngJl Ked tFECaHorO CaIVfedkOn 5-< b CraJKSTaiBmflnilI

25、-S>.J I JIIii1 -CFDJ*> II丄I I<IJF-'*IiliI II a OrACIDFJCfcQrG, MqlFnmryi Ii vduConwccGConnDCrIarIGL muCkih3i(CCI<uwnSunQerbM*ISUWrMHCcr*aE实现代码:扌由象工厂 databaseFactory类:PUbliC abstract class databaseFactory PUbIiC abstract Conn ecti On CreateC OnneCtion();PUbIiC abstract Stateme nt Crea

26、teStateme nt();具体工厂MySqIFaCtory类:PUbIiC class MySqIFaCtOry exte nds databaseFactory OVerridePUbIiC ConneCtion CreateC OnneCtion() return new mysqlC Onn ectio n();OVerridePUbIiC Stateme nt CreateStateme nt() return new mysqIStateme nt();具体工厂OraCleFaCtory类:PUbIiC class OraCIeFaCtOry exte nds databaseF

27、actory OVerridePUbIiC ConneCtion CreateC OnneCtion() retur n new OracIeC OnneCtion();OVerridePUbIiC Stateme nt CreateStateme nt() return new OracIeStateme nt();抽象产品ConnectiOn 类:PUbliC class ConneCtion PUbIiC void ConneCtion()抽象产品Statement类:PUbIiC class Stateme nt PUbIiC void Satteme nt()具体产品 mysqlCO

28、nneCtion 类:PUbIiC class mysqlC OnneCtion exte nds ConneCtion PUbIiC void connection。SyStem.out.println("提供 MySql 连接对象");具体产品 mysqIStatement类:PUbIiC class mysqIStateme nt exte nds Stateme ntPUbIiC void Satteme nt() SyStem.out.println("提供 mysql 语句对象");具体产品 oracIeCOnneCtion 类:PUbIiC

29、 class oracIeC OnneCtion exte nds ConneCtion PUbIiC void connection。SyStem.out.println("提供 oracle 连接对象");具体产品 OraCleStatement 类:PUbIiC class OracIeStateme nt exte nds Stateme nt PUbIiC Void Satteme nt() SyStem.out.println("提供 oracle 语句对象");工具类XMLUtiI :import org.w3c.dom.Docume nt

30、;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import javax.xml.parsers.Docume ntBuilder;import javax.xml.parsers.Docume ntBuilderFactory;import java.io.File;PUbIiC class XMLUtiI 该方法用于从XML配置文件中提取具体类类名,并返回一个实例对象PUbIiC StatiC ObjeCt getBea n() throws EXCePtiO n 创建DOM文档对象DOCUme ntBuilderFactorydo

31、cume ntBuilderFactoryDOCUme ntBuilderFactory .newln Sta nce();DOCUme ntBuilderdocume ntBuilderdocume ntBuilderFactory .n ewDocume ntBuilder();DOCUme nt docume nt;docume nt = docume ntBuilder.parse( new File("c On fig.xml");获取包含类名的文本结点NOdeLiSt no deList = docume nt.getEleme ntsByTagName(&qu

32、ot;databaseType");Node databaseTypeNode = no deList.item(O).getFirstChild();String databaseType = databaseTypeNode.getNodeVaIue().trim();/通过类名生成实例对象并将其返回Class clazz = CIass.forName(databaseType+"Factory");ObjeCt ObjeCt = clazz .newln Sta nce();return object;客户端Main类:PUbIiC class Mai n

33、 PUbIiC StatiC void main(String args) databaseFactory daFactory = n ull;Conn ecti OnConneCtion ;Stateme nt Stateme nt;try daFactory = (databaseFactory)XMLUtil.getBea n(); CatCh (EXCePti On e) e.pri ntStackTrace();if (daFactory=nu ll)SyStem.out.println("未获取到对象");else ConneCtion = daFactory.

34、createC OnneCtion();Stateme nt = daFactory.createStateme nt();ConneCtion.connection。;Stateme nt.satteme nt();5.类图:实现代码:单例类MUItitOn :PaCkage Sin glet on;import java.util.*;PUbIiC class MUItit On /两个或者三个PriVate StatiC ArrayLiSt<Multiton> multitonLiSt = new ArrayLiSt<>();PriVate final Stati

35、C int NUMBER=3;PriVate MUltito n()PUbIiC StatiC MUItit On getI nsta nce() / TODO: impleme ntif (multito nList.size()<NUMBER)SyStem.out.println("创建新实例成功");MUItit On CUrre nt =new MUItit on();multit On List.add(curre nt);return CUrre nt;elseSyStem.out.println("不能创建更多的实例");retur

36、n multit On List.get (new Ran dom(). next In t(multit On List.size();客户端类 Client :PaCkage Sin glet on;PUbIiC class Clie nt PUbIiC StatiC void main(String args) MUItiton m1 = MUItitOn.getInstance();MUItiton m2 = MUItiton.getInstance();MUItiton m3 = MUItiton.getInstance();MUItit On m4 = MUItito n.getl

37、 nsta nce();SyStem.out.pri ntln ("m1=m2:"+(m1=m2);SyStem.out.pri ntl n( "m2=m3:"+(m2=m4);SyStem.out.pri ntln ("m3=m4:"+(m3=m4);6运行结果:类图:JIntemalFrameJFO I JlFlJinterrWiFrameIQJInteraIFrame 1 (Strtngr tx>olear boolean,JnJ boolean)0 -geInternaIFrame 1 (SUlngI boolean,

38、boolean, booEeal boolean)JlnternaIFirameI1JInterrialFrameDemOW tInternIFraiTIeJlnternaIFramelT «sntetPaneCanerGJIFTternalFrameDemo(aCIOn Pe rform dActi EveQVOld101IfI Wmaln(S(ringVE>ld实现代码:客户端类Main:PUbliC class Mai n PUbliC StatiC Void main( Stri ng args)SyStem.out.println("Hello World!

39、");new Jln ternalFrameDemo();类 JInternalFrameDemo :import java.awt.BorderLayout;import java.awt.C Ontainer;import java.awt.Dime nsion;import java.awt.eve nt.Act ionEvent;import java.awt.eve nt.Act ion LiSte ner;import java.awt.eve nt.Wi ndowAdapter;import java.awt.eve nt.Wi ndowEve nt;import ja

40、vax.swi ng.J BUtt on;import javax.swi ng.J DeSktOPPa ne;import javax.swi ng.JF rame;PUbIiC class JI nternalFrameDemo exte nds JFrame impleme nts ACtion LiSte ner PriVate StatiC JIn ternalFrame1 in ternalFrame;ContainerConten tPa ne = this.getC Onten tPa ne();PUbIiC JI nternalFrameDemo() super("

41、主窗体");Conten tPa ne.setLayout (new BOrderLayout();JBUttOn button = new JBUttOn("创建一个子窗体");butt on .addAct ion LiSte ner(this);Conten tPa ne.add(butt on, BOrderLayout.SOUTH);this.setSize(new Dimension(300, 300);this.setVisible(true);this.addWi ndowListe ner(new Win dowAdapter() OVerrid

42、ePUbIiC void Win dowClos in g(Wi ndowEve nt e) SyStem.exit(O););PUbIiC Void acti On PerfOrmed(ACt ion EVe nt e) internalFrame = JlnternalFrame1.getJInternalFrame1(" 子窗体", true, true, true, true);in ternalFrame.setSize( new Dime nsio n(200, 200);in ternalFrame.setVisible(true);JDeSktOPPa ne

43、 desktopPa ne = new JDeSktOPPa ne();Conten tPa ne.add(desktopPa ne); desktopPa ne.add(i ntern alFrame);try intern alFrame.setSelected(true); CatCh (java.bea ns.PropertyVetoExcepti On ex) SyStem.out.pri ntl n("Excepti On while SeIeCt in g");类 JlnternalFrame1 :import javax.swi ng.JIn ternalF

44、rame;PUbIiC class Jlntern alFrame1 exte nds Jln ternalFrame PriVate StatiC Jlntern alFrame1 JIF1 = n ull;PriVate JInternalFrame1(String name, boolean b1, boolean b2, boolean b3, boolean b4) super( name, b1, b2, b3, b4);PUbIiC StatiC JInternalFrame1 getJInternalFrame1(String name, boolean b1, boolean

45、 b2, boolea n b3, boolea n b4) if (JIF1 = nUlI) JIF1 = new JInternalFrame1(name, b1, b2, b3, b4);return JIF1; EI QUICkSDrt BlnarySsarchO DatdoPerdtIOnQ -= MnIllnIlLlnl Init)VOhd Gl - srchrift(1 IntI Int) Int7.类图:O l qukkSoMir<a IrtI inc) VoId G) r binarysearch(InUII IrrtI it Int) InltiA*/K1 : ! 1

46、 ;"5 L0 rfa DataOPAdapterO : CJSartIQUlCkSOrtG HnarySearchSInarySearehODHta OPAeh plrtQufciScHt BiniarySea rch sea rc( lm1 kt+lnti Iffi)'in.O HMKIntJjUtVOldAcr ate*WWqq二三0 h MaIn.Q mln(StFing)wId实现代码:目标抽象类DataoPeratiOn :PUbliC in terface DataOPerati On PUbIiC void sort(i nt a,i nt low,i nt

47、high);PUbIiC int SearCh(i nt SrCArra y, int Start, int end, int key);适配者类QUiCkSOrt:PUbIiC class QUiCkSOrt PUbIiC void quickSout(i nt a,i nt low,i nt high)int Start = low;int end = high;int key = alow;while(e nd>start)/从后往前比较while(e nd>start&&ae nd>=key)/如果没有比关键值小的,比较下一个,直到有比关键值小的交换位

48、置,然后又从前往后比较en d-;if(ae nd<=key)int temp = ae nd;ae nd = astart;astart = temp;/从前往后比较while(end>start&&astart<=key)/如果没有比关键值大的,比较下一个,直到有比关键值大的交换位置start+;if(astart>=key)int temp = astart;astart = ae nd; ae nd = temp;/此时第一次循环比较结束,关键值的位置已经确定了。左边的值都比关键值小,右边的值都比关键值大,但是两边的顺序还有可能是不一样的,进行下

49、面的递 归调用/递归if(start>low) quickSout(a,low,start-1);/左边序列。第一个索引位置到关键值索引-1if(end<high) quickSout(a,end+1,high);/右边序列。从关键值索引+1到最后一个 适配者类 BinarySearch:PUbIiC class Bin arySearch PUbIiC int bin arySearch(i nt SrCArray, int Start, int end, int key)int mid = (end - Start) / 2 + start;if (SrCArraymid =

50、key) return mid;if (Start >= end) return -1; else if (key > SrCArraymid) return bin arySearch(srcArray, mid + 1, end, key); else if (key < SrCArraymid) retur n bin arySearch(srcArray, start, mid - 1, key);return -1;适配器类 DataoPAdaPter:PUbliC class DataOPAdaPter impleme nts DataOPerati On Pri

51、Vate QUiCkSOrt qSort;PriVate Bin arySearch bin arySearch;PUbIiC DataOPAdaPter(QUiCkSOrt qSort,B in arySearch bin arySearch) this.qSort=qSort;this.b in arySearch=b in arySearch;OVerridePUbIiC int SearCh(i nt SrCArra y, int Start, int end, int key)retur n bin arySearch.b in arySearch(srcArray,start,e

52、nd,key);OVerridePUbIiC void sort(i nt a,i nt low,i nt high) qSort.quickSout(a,low,high);客户端类Main :PUbIiC class Mai n PUbIiC StatiC void main(String args) DataOPeratiO ndataOperati On =newDataOPAdapter( newQUiCkSort(),newBin arySearch();in t a = 12,20,5,16,15,1,30,45,23,9;SyStem.out.println("排序前

53、:");for(i nt i = 0; i<a .Ien gth; i+)SyStem.out.pri nt(ai+"");int Start = 0;int end = a.len gth-1;dataOperati on. sort(a,start,e nd);SyStem.out.println("n"+"实现快速排序:");for(i nt i = 0; i<a .Ien gth; i+)SyStem.out.pri nt(ai+"");SyStem.out.println("

54、;n"+"实现了二分查找算法,查找“ 20” ");SyStem.out.pri ntln( dataOperati on. SearCh(a,0,a .Ien gth -1,20);8.类图:PIdnePaCkage BridgePatter n;crtPlsf½ VOId布Jr0 匕 PrOdUCtfflrI总 r PraduB) voi<d PtaneO Pe0 PaSSengerPIaneO - CredtePLane)Wid0 CargOWanieQ CreJtePIaIn¢()VOki I-*cfea*-h AIirbUSPrQ0 - McO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论