面向?qū)ο蟪绦蛟O(shè)計(jì)概述
面向?qū)ο蟪绦蛟O(shè)計(jì)舞肆,簡稱OOP肩袍。
在類之間杭棵,最常見的關(guān)系有:
- 依賴("uses-a"):類A的方法操縱類B的對象。
- 聚合("has-a"):類A的對象包含類B的對象氛赐。
- 繼承("is-a"):用于表示特殊與一般關(guān)系魂爪。
很多程序員采用UML(Unified Modeling Language,統(tǒng)一建模語言)繪制類圖,用來描述類之間的關(guān)系艰管。類用矩形表示滓侍,類之間的關(guān)系用帶有各種修飾的箭頭表示。
用戶自定義類
不要編寫返回引用可變對象的訪問器方法牲芋,這樣可能導(dǎo)致封裝的破壞撩笆。例如:
class Employee{
private Date hireDay;
public Date getHireDay(){
return hireDay;
}
Employee harry = ...
Date d = harry.getHireDay();
這樣捺球,對d調(diào)用更改器方法就可以自動地改變這個(gè)雇員對象的私有狀態(tài)。
final實(shí)例域
將實(shí)例域定義為final夕冲,則必須確保在每一個(gè)構(gòu)造器執(zhí)行后氮兵,這個(gè)域的值被設(shè)置,并且在后面的操作中歹鱼,不能夠?qū)ζ湓龠M(jìn)行修改泣栈。
final修飾符大多應(yīng)用于基本類型域或不可變類的域(如果類中的每個(gè)方法都不會改變其對象,則為不可變的類弥姻,如String類)秩霍。而對于可變的類,使用final修飾符僅表示存儲在某變量中的對象引用在對象構(gòu)造后不能被改變蚁阳,而并不意味著該變量是個(gè)常量。任何方法都可以對該變量引用的對象調(diào)用更改器鸽照。
靜態(tài)域和靜態(tài)方法
用static修飾符螺捐。建議使用類名,而不是對象來調(diào)用靜態(tài)方法矮燎。
在下面兩種情況下使用靜態(tài)方法:
- 一個(gè)方法不需要訪問對象狀態(tài)定血,其所需參數(shù)都是通過顯式參數(shù)提供。
- 一個(gè)方法只需要訪問類的靜態(tài)域诞外。