久久综合丝袜日本网手机版,日韩欧美中文字幕在线三区,亚洲精品国产品国语在线,极品在线观看视频婷婷

      <small id="aebxz"><menu id="aebxz"></menu></small>
    1. java方案設(shè)計與論證

      時間:2022-07-02 11:21:40 設(shè)計 我要投稿
      • 相關(guān)推薦

      java方案設(shè)計與論證

        java方案設(shè)計與論證的相關(guān)文章就在下面,在不斷的學(xué)習(xí)java過程中,下面的問題會一直存在,請看:

      java方案設(shè)計與論證

        java方案設(shè)計與論證

        類似一些高內(nèi)聚、低耦合、java設(shè)計原則都要牢記,設(shè)計類、抽象類、接口的能力,鍛煉這種能力可以通過去查看eclipse里面的源代碼和自己多動手設(shè)計體驗一些經(jīng)典類的設(shè)計過程,會有一部分的提升。當(dāng)然,前提是必須了解一些關(guān)于類設(shè)計原則方面的知識。然后讓這些知識和實際代碼結(jié)合起來,不停的去鍛煉這種能力,會提升比較迅速。堅持!

        類的設(shè)計原則有助于設(shè)計出合理的類。

        內(nèi)聚性

        類應(yīng)該描述一個單一的實體,而所有的類操作應(yīng)該在邏輯上相互配合,支持一個一致的目的。例如:可以設(shè)計一個類用于學(xué)生,但不應(yīng)該將學(xué)生與教職工組合在一個類中,因為學(xué)生和教職工是不同的實體。

        如果一個實體擔(dān)負太多的職責(zé),就應(yīng)該按各自的職責(zé)分成幾個類。例如:String類、StringBuffer類和 StringBuilder類用于處理字符串,但是他們的職責(zé)不同。String類處理不變的字符串,StringBuilder類創(chuàng)建可變字符串, StringBuffer()

        與 StringBuffer() 類還包含更新字符串的同步方法。

        一致性

        遵循標(biāo)準java程序設(shè)計風(fēng)格和命名習(xí)慣。為類、數(shù)據(jù)域和方法選取具有信息的名字。通常的風(fēng)格是將數(shù)據(jù)聲明置于構(gòu)造方法之前,并且將構(gòu)造方法置于方法之前。

        選擇名字要保持一致。給類似的操作選擇不同的名字并非良好的實踐。例如:Length() 方法返回String、StringBuilder 和 StringBuffer 的大小。如果在這些類中給這個方法用不同的名字就不一致了。

        一般來說,應(yīng)該具有一致性地提供一個公共無參的構(gòu)造函數(shù),用于構(gòu)建默認實例。如果一個類不支持無參的構(gòu)造函數(shù),要用文檔寫出原因。如果沒有顯示定義構(gòu)造方法,即假定有一個空方法體的公共默認無參構(gòu)造方法。

        如果不想讓用戶創(chuàng)建類的對象,可以在類中聲明一個私有的.構(gòu)造方法,Math類就是如此。

        封裝性

        一個類應(yīng)該使用private修飾符隱藏其數(shù)據(jù),以免用戶直接訪問它。這使得類更易于維護。只在希望數(shù)據(jù)域可讀的情況下,才提供get方法;也只在希望數(shù)據(jù)域可更新的情況下,才提供set方法。例如:Rational類為numerator和denominator提供了get方法,但是沒有提供set方法,因為Rational對象是不可改變的。

        清晰性

        為使設(shè)計清晰,內(nèi)聚性、一致性和封裝性都是很好的設(shè)計原則。除此之外,類應(yīng)該有一個很清晰的合約,從而易于解釋和理解。

        用戶可以以各種不同的組合、順序,以及在各種環(huán)境中結(jié)合使用多個類。因此,在設(shè)計一個類時,這個類不應(yīng)該限制用戶如何以及何時使用該類;以一種方式設(shè)計屬性,以允許用戶按值的任何順序和任何組合來設(shè)置;設(shè)計方法應(yīng)該使得實現(xiàn)的功能與他們出現(xiàn)的順序無關(guān)。例如:Loan類包含屬性loanAmount、numberOfYears和annualIntereRate,這些屬性的值,可以按任何順序來設(shè)置。

        方法應(yīng)在不生產(chǎn)混淆的情況下進行直觀定義。例如:String類中的substring(int beginIndex, int endIndex)方法就有一點混亂。這個方法返回從beginIndex到endIndex-1而不是endIndex的子串。該方法應(yīng)該返回從beginIndex到endIndex的子字符串,從而更加直觀。

        不應(yīng)該聲明一個來自其他數(shù)據(jù)域的數(shù)據(jù)域。例如,下面的Person類有兩個數(shù)據(jù)域:birthDate和age。由于age可以從birthDate導(dǎo)出,所以age不應(yīng)該聲明為數(shù)據(jù)域。

        public class Person{

        private java.util.Date.birthDate;

        private int age;

        }

        完整性

        類是為許多不同用戶的使用而設(shè)計的。為了能在一個廣泛的應(yīng)用中使用,一個類應(yīng)該通過屬性和方法提供多種方案以適應(yīng)用戶的不同需求。例如:為了滿足不同的應(yīng)用需求,String類包含了40多種很實用的方法。

        實例和靜態(tài)

        依賴于類的具體實例的變量或方法必須是一個實例變量或者方法。如果一個變量被類的所有實例所共享,那就應(yīng)該將它聲明為靜態(tài)的。如果方法不依賴于某和具體的實例,那就應(yīng)該將他聲明為靜態(tài)方法。

        應(yīng)該總是使用類名(而不是引用變量)引用靜態(tài)變量和方法,以增強可讀性并避免錯誤。

        不要在構(gòu)造方法中傳入?yún)?shù)來初始化靜態(tài)數(shù)據(jù)域。最好使用set方法改變靜態(tài)數(shù)據(jù)域。

        構(gòu)造方法永遠都是實例方法,因為它是用來創(chuàng)建具體實例的。一個靜態(tài)變量或方法可以從實例方法中調(diào)用,但是不能從靜態(tài)方法中調(diào)用實例變量或方法。

        繼承和聚合

        繼承和聚合之間的差異,就是 is-a(是一種) 和 has-a(具有)之間的關(guān)系。例如,蘋果是一種水果;因此,可以使用繼承來對Apple類和Fruit類之間的關(guān)系進行建模。人具有名字;因此,可以使用聚合來對Person類和Name類之間的關(guān)系建模。

        接口和抽象類

        接口和抽象類都可以用于為對象指定共同的行為。如何決定是采用接口還是類呢》通常,比較強的is-a (是一種)關(guān)系清晰的描述了父子關(guān)系,應(yīng)該采用類來建模。例如,因為橘子是一種水果,他們的關(guān)系就應(yīng)該采用類的繼承關(guān)系來建模。弱的is-a關(guān)系,也成為is-kind-of (是一類)關(guān)系,表示一個對象擁有某種屬性。弱的is-a關(guān)系可以使用接口建模。例如所有的字符串都是可以比較的,因此String類實現(xiàn)了Comparable接口。圓或者矩形是一個幾何對象,因此Circle可以設(shè)計為GeometricObject的子類。圓有不同的半徑,并且可以基于半徑比較,因此Circle可以實現(xiàn)Comparable接口。

        接口比抽象類更加靈活,因為一個子類只能繼承一個父類,但是卻可以實現(xiàn)任意個數(shù)的接口。然而,接口不嗯能夠具有具體的方法?梢越Y(jié)合接口和抽象的優(yōu)點,創(chuàng)建一個接口。使用一個抽象類來實現(xiàn)它?梢砸暺浞奖闶褂媒涌诨蛘叱橄箢。

      【java方案設(shè)計與論證】相關(guān)文章:

      mba論證分析寫作范文07-02

      mba論證分析寫作方法07-02

      畢業(yè)論文必會的論證方法?07-10

      mba論證分析寫作范文怎么寫07-02

      JAVA題庫:JAVA面試題目整理07-11

      Java實習(xí)報告09-20

      法律論證咨詢服務(wù)合同07-02

      專家論證會邀請函07-15

      改進方案設(shè)計07-04

      課題方案設(shè)計07-04