java柔性多态功能设计与实现

java柔性多态功能设计与实现

ID:33766164

大小:68.80 KB

页数:7页

时间:2019-03-01

java柔性多态功能设计与实现_第1页
java柔性多态功能设计与实现_第2页
java柔性多态功能设计与实现_第3页
java柔性多态功能设计与实现_第4页
java柔性多态功能设计与实现_第5页
资源描述:

《java柔性多态功能设计与实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、系信息工程学院学号重庆科技学院信息工程学院论文题目:Java柔性多态功能设计与实现作者小喻专业计算机科学与技术班级计科A1001成绩指导教师张望2013年1月10日Java柔性多态功能设计与实现小喻重庆科技学院,重庆摘要:提出了柔性多态设计思想,即固化接口定义,由子类多态派发函数实现对真实函数的功能调用。应用这种设计,仅修改所屈模块就可以完成相应功能的增加、删除、修改,父类接口及相关联各模块均不用变化。也就是说当需求分析变化时,程序改动最小。关键词:柔性多态;固化接口;派发函数;模块Designandimpleme

2、ntationofJavaflexiblepolymorphismJinBaidong:(Schoolofcomputerandinfonuationtechnology,Liaoningnornuiluniversity,Liaoning,Dalian116081,China)Abstract:Tnthisarticle,anideaofflexiblepolymorphismdesignisproposed,namelyfixingtheinterfacedefineandexecutingtherealfun

3、ctionthroughthepolymorphicdispatchfunction.Applyingthisdesign,onlyreprogramofrelevantmodulesisneededtoadd,updateanddeletetheappropriatefunctions,whileparentinterfacesandotherrelevantmodulesneedsnottobechanged・Thatistosaythattheleastchangeisneededwhenrequiremen

4、tanalysischanges.Keywords:flexiblepolymorphism;fixinginterface;dispatchfunction;module0引言多态是编程屮常用的一种技术,例如编制求圆和长方形面积的类图(如图1所示)。《Requestarea》ClientClientfloatgetArea()RectanglefloatgetArea()(interface}shapefloatgetArea()图1多态类图示例从图1可以看出这是常规的多态程序设计,父类是Shape,多态接El函

5、数是floatgetAreaO;子类Circle及Rcctanglo分别重写了多态函数getAreaO;客户端通过动态绑定对接口编程实现了求圆或长方形血积的功能。但是随着时间的推移,如果还需要求圆和长方形的周长,该如何修改程序呢?普通的思路是:重新定义接口Shape,增加求周长接口函数floatgetAroundLenO,再在Circle及Rectangle类中实现getAroundLeni^i数的具体功能。这势必造成接口及实现模块,客户端调用程序等需要修改并重新编译。这是我们不希望看到的,我们希望仅底层具体模块功

6、能需修改并编译,而接口,上层模块及客户端程序不要重新编写。因此,如何巧妙运用多态,满足不断变化的需求,只修改须改变的具体模块,是本文论述的重点。1・普通多态编程局限性从图1及上述分析中可看出:如果接口函数内容发生变化,那么相应的各实现子类必须发生变化,导致相关联的各级模块必须重新编程及编译,这即是普通多态编程的局限性。造成这一结果的主要原因是父类、子类定义的多态函数关联过强,消除这种关联性,是实现本文柔性多态功能的关键。2柔性多态设计与实现柔性多态是指程序架构必须满足不断发展的需求分析的变化要求,只修改需要改变的子

7、模块,而相关联模块及主程序都不需要改变。2.1简单实例代码仍以求圆和长方形面积、周长为例,采用柔性多态,具体代码如下(仅列了接口Shape及Circle代码,Rectangle代码大致同Circle,故略):interfaceShape{publicbooleandispatch(inthiD,Objectin):{classCircleimp1emontsShape{publicfloatrpublicCircle(floatr){this.r=r:fj多态函数publicObjectdispatch(intnI

8、D,Objectin)Objectobj=nul1;switch(nlD){case0;nul1二getArea(in);break;case1;null=getAroundLen(in);break;}rettjmnull;ObjectgetArea(Objectin)/,jF多态函数{floatarea=(float)Math.PIrr;returnne

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。