java方案設計與論證
java方案設計與論證的相關文章就在下面,在不斷的學習java過程中,下面的問題會一直存在,請看:
java方案設計與論證類似一些高內聚、低耦合、java設計原則都要牢記,設計類、抽象類、接口的能力,鍛鍊這種能力可以通過去查看eclipse裏面的源代碼和自己多動手設計體驗一些經典類的設計過程,會有一部分的提升。當然,前提是必須瞭解一些關於類設計原則方面的知識。然後讓這些知識和實際代碼結合起來,不停的去鍛鍊這種能力,會提升比較迅速。堅持!
類的設計原則有助於設計出合理的類。
內聚性
類應該描述一個單一的實體,而所有的類操作應該在邏輯上相互配合,支持一個一致的目的。例如:可以設計一個類用於學生,但不應該將學生與教職工組合在一個類中,因為學生和教職工是不同的實體。
如果一個實體擔負太多的職責,就應該按各自的職責分成幾個類。例如:String類、StringBuffer類和 StringBuilder類用於處理字符串,但是他們的職責不同。String類處理不變的字符串,StringBuilder類創建可變字符串, StringBuffer()
與 StringBuffer() 類還包含更新字符串的同步方法。
一致性
遵循標準java程序設計風格和命名習慣。為類、數據域和方法選取具有信息的名字。通常的風格是將數據聲明置於構造方法之前,並且將構造方法置於方法之前。
選擇名字要保持一致。給類似的操作選擇不同的名字並非良好的實踐。例如:Length() 方法返回String、StringBuilder 和 StringBuffer 的大小。如果在這些類中給這個方法用不同的名字就不一致了。
一般來説,應該具有一致性地提供一個公共無參的構造函數,用於構建默認實例。如果一個類不支持無參的構造函數,要用文檔寫出原因。如果沒有顯示定義構造方法,即假定有一個空方法體的公共默認無參構造方法。
如果不想讓用户創建類的對象,可以在類中聲明一個私有的構造方法,Math類就是如此。
封裝性
一個類應該使用private修飾符隱藏其數據,以免用户直接訪問它。這使得類更易於維護。只在希望數據域可讀的情況下,才提供get方法;也只在希望數據域可更新的情況下,才提供set方法。例如:Rational類為numerator和denominator提供了get方法,但是沒有提供set方法,因為Rational對象是不可改變的。
清晰性
為使設計清晰,內聚性、一致性和封裝性都是很好的設計原則。除此之外,類應該有一個很清晰的合約,從而易於解釋和理解。
用户可以以各種不同的組合、順序,以及在各種環境中結合使用多個類。因此,在設計一個類時,這個類不應該限制用户如何以及何時使用該類;以一種方式設計屬性,以允許用户按值的任何順序和任何組合來設置;設計方法應該使得實現的功能與他們出現的順序無關。例如:Loan類包含屬性loanAmount、numberOfYears和annualIntereRate,這些屬性的值,可以按任何順序來設置。
方法應在不生產混淆的情況下進行直觀定義。例如:String類中的substring(int beginIndex, int endIndex)方法就有一點混亂。這個方法返回從beginIndex到endIndex-1而不是endIndex的子串。該方法應該返回從beginIndex到endIndex的子字符串,從而更加直觀。
不應該聲明一個來自其他數據域的數據域。例如,下面的Person類有兩個數據域:birthDate和age。由於age可以從birthDate導出,所以age不應該聲明為數據域。
public class Person{
private hDate;
private int age;
}
完整性
類是為許多不同用户的使用而設計的。為了能在一個廣泛的應用中使用,一個類應該通過屬性和方法提供多種方案以適應用户的不同需求。例如:為了滿足不同的應用需求,String類包含了40多種很實用的`方法。
實例和靜態
依賴於類的具體實例的變量或方法必須是一個實例變量或者方法。如果一個變量被類的所有實例所共享,那就應該將它聲明為靜態的。如果方法不依賴於某和具體的實例,那就應該將他聲明為靜態方法。
應該總是使用類名(而不是引用變量)引用靜態變量和方法,以增強可讀性並避免錯誤。
不要在構造方法中傳入參數來初始化靜態數據域。最好使用set方法改變靜態數據域。
構造方法永遠都是實例方法,因為它是用來創建具體實例的。一個靜態變量或方法可以從實例方法中調用,但是不能從靜態方法中調用實例變量或方法。
繼承和聚合
繼承和聚合之間的差異,就是 is-a(是一種) 和 has-a(具有)之間的關係。例如,蘋果是一種水果;因此,可以使用繼承來對Apple類和Fruit類之間的關係進行建模。人具有名字;因此,可以使用聚合來對Person類和Name類之間的關係建模。
接口和抽象類
接口和抽象類都可以用於為對象指定共同的行為。如何決定是採用接口還是類呢》通常,比較強的is-a (是一種)關係清晰的描述了父子關係,應該採用類來建模。例如,因為橘子是一種水果,他們的關係就應該採用類的繼承關係來建模。弱的is-a關係,也成為is-kind-of (是一類)關係,表示一個對象擁有某種屬性。弱的is-a關係可以使用接口建模。例如所有的字符串都是可以比較的,因此String類實現了Comparable接口。圓或者矩形是一個幾何對象,因此Circle可以設計為GeometricObject的子類。圓有不同的半徑,並且可以基於半徑比較,因此Circle可以實現Comparable接口。
接口比抽象類更加靈活,因為一個子類只能繼承一個父類,但是卻可以實現任意個數的接口。然而,接口不嗯能夠具有具體的方法。可以結合接口和抽象的優點,創建一個接口。使用一個抽象類來實現它。可以視其方便使用接口或者抽象類。
相關文章
-
JAVA題庫:JAVA面試題目整理
1. 中的異常處理機制的簡單和應用。2. Java的接口和C++的虛類的相同和不同處。3. 垃圾回收的優點和原理。並考慮2種回收機制。4. 線程同步的方法。5. Error與Exception有什麼區別?方法/步驟11. 中的異常處理機制的簡 -
女生去學JAVA,適合嗎?JAVA現在的就業前景好不好啊?
本文目錄七年級評語範文七年級班主任評語七年級學生操行評語七年級學生評語集錦尊重他人,樂於助人,舉止優雅,深得老師和寢室管理員的好評和喜愛;有較好的公民素養等級,文明得體;有強烈的學習慾望,但要記得要持之以恆,更要細 -
java就業前景與方向
Java工程師的就業前景不是一層不變的,而是隨着市場變化而變化的,當我們大量需要的時候Java工程師就業前景就會比較明朗,相反我們不需要了,Java程序員的就業前景還會好嗎,今天我們來分析一下2017年Java就業前景。一,整體就業 -
Java課程設計實驗報告
導語:日曆可以按年或月前後翻動,能夠顯示當前的日期,可以為每頁日曆選擇背景圖片。以下是小編為大家整理分享的Java課程設計實驗報告,歡迎閲讀參考。一、實驗目的1、加深對課堂講授內容的理解,掌握解決實際應用問題時所應 -
java程序設計實訓心得體會
這次實訓,我們更多學到的是不懂就問和自己應該儘自己的全力去嘗試,哪怕失敗,只要自己儘自己的全力,和身邊同學一起探討而不是抄襲,團結合作,發揮團隊意識,最後在自己的努力下,終於運行成功,這種成就感美不可言,心情愉悦至極。下 -
計算機二級考試Java練習題及答案
1[單選題] 下列方法被調用後,一定使調用線程改變當前狀態的是( )。fy() d()p()ive()參考答案:C參考解析:線程調用sleep函數後,使當前線程進入停滯狀態。yield函數可使線程進入可執行狀態,排程器從可執行狀態的線程中重新排 -
計算機軟件開發的JAVA編程語言探討論文
【摘要】21世紀是計算機技術不斷髮展的時代,計算機操作技術的不斷智能化和集成化,對我國的計算機軟件開發以及JAVA語言編程都具有重要作用。計算機軟件開發應用JAVA語言編程,能夠通過跨平台操作,滿足用户的不同需求。由於 -
2016年java課程設計心得體會範文
java課程設計心得體會隨着計算機和inteet的發展,傳統的教學方式轉變成了網絡教學形式,通過計算機網絡技術構建教學網站成為現代網絡教育的一種趨勢,以互聯網為平台,構建網絡教學系統,可以為更多的用户提供更多受教育 -
Java語言程序設計期末考試試卷
Java語言程序設計期末考試試卷一.填空題(共30分)1. 用HTML編制網頁時需要用到的四個基本語句是 、 、 、和是指是指4.在HTML中製作表格必須定義 、 、 、 。5. HTML是指6.有下列程序段:for(int i=1,j=20,k=0;i<=3& -
java程序設計課程培訓心得體會
愛美的女子總有那麼幾件首飾,耳環、手鍊、項鍊等等,為美麗的它們找一個家,妥妥的住着,在我們需要用到它們來打扮自己的時候,就能在短時間內尋找到適合當天搭配的那一款了。精美的首飾盒自然成了首選,是首飾們最舒服的家哦。