把本來以為很簡單的一個輸出日歷的習(xí)題做了一下,花了很多時間,到現(xiàn)在還遺留兩個問題,正在水木清華求助 =_=
1. 關(guān)于Calendar類
Calendar類本身是一個抽象類,使用時需要根據(jù)具體的日期制度實現(xiàn)。Java內(nèi)置了對格列高利歷(公歷)的支持--Gregorian類。
2. Calendar 類設(shè)置具體參數(shù)的方法以前沒碰到過
set(int field, int value)
比如要設(shè)置月份為三月,就可以calendar1.set(Calendar.MONTH, Calendar.MARCH);
get(int, int)方法也類似
Chapter 10 Object-Oriented Modeling
1. 軟件開發(fā)的幾個過程
需求描述 -< 系統(tǒng)分析 -< 系統(tǒng)設(shè)計 -< 具體實現(xiàn) -< 測試 -< 安裝配置 -< 維護(hù)
2. 類與類之間的關(guān)系
Association
相關(guān)聯(lián),如教師、課程與學(xué)生三個類之間,學(xué)生 聽 課,教師 授 課
Aggregation and Composition
包含關(guān)系,composition 更為嚴(yán)格,排他性的擁有,如公民與身份證號,aggregation 則無此限制,如學(xué)生與所在學(xué)校
Inheritance
繼承,可以是接口或類
注意它們各自在UML中的符號
3. 類的設(shè)計
* 一個有過多內(nèi)容的類應(yīng)當(dāng)被分解為幾個小類,如String, StringBuffer, 和 StringTokenizer 類各自處理不同的情況。用戶通常把不同的類按各種順序組合起來使用,因此在設(shè)計類時不能限制用戶在何時、如何使用這些類,并使用戶能夠按照任意的順序和任意的組合設(shè)置它們的屬性。
一般來講,最好提供一個無參數(shù)的構(gòu)造方法,并盡可能重載equals和toString方法,在重載equals的同時也要* 重載hashCode方法,使得相同的兩個對象有相同的hash code。如果想阻止用戶創(chuàng)建類的實例,就把構(gòu)造函數(shù)聲明為private,如Math類。
* 使用繼承和內(nèi)置(composition):
inheritance:
public class Cylinder extends Circle {
//...
}
composition:
public class Cylinder {
private Circle circle;
/...
}
一般來說,要用到多態(tài)這一特性的話,就要使用繼承,否則可以使用內(nèi)置,因為它相對獨立,更機(jī)動。
* Convenience class
接口比抽象類更為機(jī)動,卻不能包含具體方法,可以通過創(chuàng)建一個實現(xiàn)它的方法的抽象類來彌補這一缺陷,使用時哪一個方便就用哪一個。
4. 使用 Sequence Diagrams 和 Statecharts 建模