• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      論如何提高JAVA代碼的可重用性

      2017-03-09 09:15:33胡文娟
      中國新通信 2017年2期
      關鍵詞:全局代碼對象

      胡文娟

      【摘要】 計算機軟件開發(fā)的代碼重用是一個終極目標。本論文以JAVA軟件開發(fā)為例,說明了組成支持代碼重用的一種方法的三個步驟。

      【關鍵詞】 JAVA 代碼重用

      一、引言

      計算機軟件開發(fā)的代碼重用是一個終極目標,然而,重用可能難以實現(xiàn),因為傳統(tǒng)面向對象編程方法在可重用性方面存在一些不足。本論文以JAVA軟件開發(fā)為例,說明了組成支持代碼重用的一種方法的三個步驟。

      二、JAVA軟件代碼重用的三個步驟

      第一步

      將功能移出類實例方法:由于類繼承機制缺乏精確性,因此對于代碼重用來說它并不是一種最理想的機制。執(zhí)行單一概念性任務的任何方法都應該是獨立的,并應將其作為要重用的首選方法。

      要實現(xiàn)這一點,必須返回到過程式編程,將代碼移出類實例方法并將其移入全局可見的過程中。

      在 Java 中,方法不能脫離類而存在。但是,可以使方法成為單個類的、公共可見的靜態(tài)方法。如可以采用類似下面的一個類:

      class Polygon {..

      public int getPerimeter() {...}

      public boolean isConvex() {...}

      public boolean containsPoint(Point p) {...}

      .. }

      并將其更改為類似以下的形式:

      class Polygon {..

      public int getPerimeter() {return pPolygon

      computePerimeter(this);}

      public boolean isConvex() {return pPolygon.isConvex(this);}

      public boolean containsPoint(Point p)

      {return pPolygon.containsPoint(this, p);}

      ..}

      以上事例中所實現(xiàn)效果就是,客戶端代碼不再非要通過繼承 Polygon 來重用其功能?,F(xiàn)在這一功能在 pPolygon 類中是以過程為單位提供的。

      第二步

      將非基本數(shù)據(jù)類型的輸入?yún)?shù)類型轉換為接口類型:通過接口參數(shù)類型而非通過類繼承利用多態(tài)性,這是在面向對象編程方法中實現(xiàn)可重用性的真正基礎??芍赜眯允峭ㄟ^編寫接口,而不是通過編寫類來實現(xiàn)的。

      將以上的論述應用到第一步的結果,一旦某個功能塊可作為一個全局可見的獨立過程,就可以通過將它的每個類級輸入?yún)?shù)類型轉換為接口類型,從而進一步提高它的可重用性。

      例如,假定有一個全局可見的靜態(tài)方法:

      static public boolean contains(Rectangle rect, int x, int y) {...}

      該方法旨在判斷給定的矩形是否包含給定的位置。此處應該將 rect 參數(shù)的類型從類類型 Rectangle 更改為接口類型,如下所示:

      static public boolean contains(Rectangular rect, int x, int y){...}

      Rectangular could be the following interface:

      public interface Rectangular {

      Rectangle getBounds();}

      現(xiàn)在,可描述為 Rectangular 的類的對象都可作為 rect 的參數(shù)傳遞給 pRectangular.contains()。通過放寬對可傳遞給方法的參數(shù)的約束來提高方法的可重用性。

      第三步

      選擇耦合性較小的輸入?yún)?shù)接口類型:在執(zhí)行第二步時,應該選擇能充分描述過程對參數(shù)的要求且累贅最少的任何接口來替代給定的類類型。參數(shù)對象要實現(xiàn)的接口越小,任一特定類能實現(xiàn)該接口的機會就越大。如果有如下這樣一個方法:

      static public boolean areOverlapping(Window window1, Window window2) {...}

      該方法旨在判斷兩個(假定為 rectangular)窗口是否重疊,如果該方法僅要求它的兩個參數(shù)提供它們各自的 rectangular坐標,則簡化這兩個參數(shù)的類型以反映這一事實:

      static public boolean areOverlapping(Rectangular rect1, Rectangular rect2) {...}

      以上代碼假定前面的 Window 類型對象也能實現(xiàn)Rectangular?,F(xiàn)在可以重用任何 rectangular 對象的第一個方法中所包含的功能。

      三、小結

      以上三步旨在改進用更傳統(tǒng)的面向對象方法編寫的現(xiàn)有代碼。將這三個步驟與面向對象編程結合使用即可構建一種新的方法,可用這種新方法編寫以后的JAVA代碼,這樣編寫代碼將提高方法的可重用性和內聚性,同時也會減少方法的相互耦合及復雜性。

      猜你喜歡
      全局代碼對象
      神秘來電
      睿士(2023年2期)2023-03-02 02:01:09
      Cahn-Hilliard-Brinkman系統(tǒng)的全局吸引子
      量子Navier-Stokes方程弱解的全局存在性
      創(chuàng)世代碼
      動漫星空(2018年11期)2018-10-26 02:24:02
      創(chuàng)世代碼
      動漫星空(2018年2期)2018-10-26 02:11:00
      創(chuàng)世代碼
      動漫星空(2018年9期)2018-10-26 01:16:48
      創(chuàng)世代碼
      動漫星空(2018年5期)2018-10-26 01:15:02
      落子山東,意在全局
      金橋(2018年4期)2018-09-26 02:24:54
      攻略對象的心思好難猜
      意林(2018年3期)2018-03-02 15:17:24
      基于熵的快速掃描法的FNEA初始對象的生成方法
      沈阳市| 桑日县| 宜章县| 墨玉县| 方山县| 遂川县| 鹤壁市| 江川县| 南投县| 三门县| 郁南县| 萨嘎县| 荃湾区| 任丘市| 云和县| 台中县| 中方县| 剑阁县| 陆丰市| 靖远县| 彭阳县| 和静县| 宁蒗| 澄江县| 颍上县| 依兰县| 介休市| 图木舒克市| 桃园县| 泰州市| 额敏县| 巫山县| 溧阳市| 沙雅县| 临桂县| 哈尔滨市| 乌审旗| 云阳县| 灵寿县| 阳江市| 南投县|