【文章內(nèi)容簡介】
果屬性為private,那么屬性就不可以從定義的類外調(diào)用。如果屬性為 protected,那么屬性行為和 private 相同,但是可被派生類繼承。 下圖是類的圖標(biāo)。在下圖中,我們看到類名和中間區(qū)域的屬性。 上圖中,類的屬性區(qū)域顯示了賬戶持有者類的一些屬性。類的公共屬性使用十(加號(hào))符號(hào)前綴 表示,而私有屬性使用一(減號(hào))符號(hào)前綴表示。A c c o u n t H o l d e r N m a e : S t r i n g A g e : i n t e g e r+ s t a t u s : B o o l e a nUML 在面向?qū)ο蟮姆治龊驮O(shè)計(jì)中的應(yīng)用 第三章 開發(fā)對象模型 10 保護(hù)型成員在其前面可不帶有任何符號(hào)或帶 ( 號(hào))。 Name: String 表示 Name 是字符串型的私有屬性。 類方法 (Class Methods) 類方法定義了類可以被要求進(jìn)行的行為。程序員的責(zé)任就是將其轉(zhuǎn)換為函數(shù)。所有通過類創(chuàng)建出的對象都能得到同樣的屬性和方法。 方法可具有多個(gè)參數(shù)。另外,方法也可使用很多類。 在定義方法時(shí),應(yīng)記住如下幾點(diǎn): ? 類似的操作不需要 使用類似的參數(shù)。這意味著盡管可能有些方法具有相同的名字,但是它們接收的參數(shù)將不盡相同。 ? 如果在不同的類中定義同樣的操作,那么它們的功能最好是相同的。 上述類中介紹的 GetName 和 SetName 為類方法。前綴例如+(加號(hào))和(減號(hào))與類屬性的含義是同樣的。 + GetName(): String 是“賬戶持有者” (Account Holder)類的公共A c c o u n t H o l d e r N m a e : S t r i n g A g e : i n t e g e r+ s t a t u s : B o o l e a n+ G e t N a m e ( ) : S t r i n g+ S e t N a m e ( s N a m e : S t r i n g )UML 在面向?qū)ο蟮姆治龊驮O(shè)計(jì)中的應(yīng)用 第三章 開發(fā)對象模型 11 成員函數(shù),并返回字符串型參數(shù)。 SetName 方法的解釋仍然相同,但不同的是它要用到一個(gè)名為 sName 字符串型的輸入?yún)?shù)。 對象圖標(biāo) (The Object Icon) 正如上文所描述的一樣,對象是類的實(shí)例。所以對象圖和類圖基本相似。 下圖表示對象圖: 可看到 CAH: AccountHolder, CAH 為 AcountHolder 類的對象名稱。注意類對象名稱和類名稱之間的:(冒號(hào))。屬性變量已經(jīng)賦了值,并且當(dāng)創(chuàng)建類 AccountHolder 的對象時(shí),進(jìn)行初始化。應(yīng)該注意的是該對象圖標(biāo)中沒有列出方法。 類關(guān)系 (Class Relationships) 類間存在關(guān)系。類之間各種不同的關(guān)系如下: ? 關(guān)聯(lián) (Association) ? 泛化 (Generalization) CAH: A c c o u n t H o l d e rN a m e = C h a r l s A g e = 3 5S t a t u s = T r u eUML 在面向?qū)ο蟮姆治龊驮O(shè)計(jì)中的應(yīng)用 第三章 開發(fā)對象模型 12 ? 依賴 (Dependency) ? 提煉 /細(xì)化 (Refinement) 關(guān)聯(lián) (Association) 關(guān)聯(lián) (Associations)是類之間的連接 (Connection),通常為雙向的。 系統(tǒng)中對象之間存在的關(guān)系定義為鏈接 (Links)。 鏈接也是雙向的。因此,每個(gè)鏈接都具有反向鏈接??梢杂孟聢D表示: (Role in Association) 一項(xiàng)關(guān)聯(lián)都可有若干角色 (Roles)。角色可通過關(guān)聯(lián)與每個(gè)類相連。某個(gè)類所提供的功能,從另一個(gè)類的角度來看就稱為角色。賦給類所扮演的角色的名稱為角色名稱。 角色名為一附有指針的字符串從類向外指出,表示該類所扮演的角色如指針?biāo)尽? 上圖可解釋為客戶可擁有一個(gè)賬戶,而該賬戶被一個(gè)客戶所擁有。兩個(gè)類間的直線表示了它們之間的關(guān)聯(lián)。 在對角色命名時(shí),要記住以下幾點(diǎn): ? 角色名稱如果與類名稱 相同,則可省略。 C u s t o m e r A c c o u n tH o l d sO w n e d b yUML 在面向?qū)ο蟮姆治龊驮O(shè)計(jì)中的應(yīng)用 第三章 開發(fā)對象模型 13 ? 角色名稱必須獨(dú)一無二。 ? 角色名稱必須和對象的所有屬性名稱不同。 ? 角色名稱必須能夠描述該類在該關(guān)聯(lián)中的功能或作用。 單向關(guān)聯(lián) (Unidirectional Association) 考慮如下圖表。指向賬號(hào)的是帶有箭頭的線,而不是一條直線。這個(gè)關(guān)聯(lián)表示關(guān)系只在順著箭頭的方向有