樊學東
(西安外事學院,西安 710000)
建立對象模型中確定屬性的設計研究
樊學東
(西安外事學院,西安 710000)
在建立對象模型時,我的方法是先確定類、對象和關聯,對于大型復雜問題,需要進一步劃分出多個主題;再給類和關聯增補進一步描述的屬性;隨后利用繼承關系適當合并和組織類。確定屬性是基本問題,本文就對象建模確定屬性做些探討。
對象模型;屬性;對象
在建立對象模型時,我的方法是先確定類、對象和關聯,對于大型復雜問題,還要進一步劃分出多個主題;然后給類和關聯增補進一步描述的屬性;隨后利用繼承關系適當的合并和組織類。因為動態模型和功能模型更準確地描述了類中所提供的服務的需求,所以,類中操作(服務)需等到建立了這兩個模型之后再確定。屬性是建模中的核心要素。確定屬性是建模的基本問題。
對象是用屬性來描述的,如果有些名詞只是其他對象的屬性的描述,則應該把這些名詞從候選類-&-對象中去掉。當然,若某個性質具有很強的獨立性,則把它作為類而不是作為屬性,這可以當做準則。在ATM系統中, “支票”、“現金”、“賬單”、“密碼”、“取款額”、 “余額”、“分行代碼”、“卡號”和“類型”等,都應該作為屬性而不是作為類。在分析人員考慮不周的地方,該準則能幫助他合理篩選出潛在的對象。
2.1 為什么確定屬性
屬性是用來描述類-&-對象的特性的。一個屬性是一個數據項(狀態信息),類中對象都有相應的值(狀態)。目前,面向對象分析模型越來越專門化,而且更加詳細,每個類-&-對象都由屬性描述,而屬性則按照類-&-對象的規范來描述。屬性放在類-&-對象表示符號的中間部位。
在面向對象分析中,“屬性”用來反映問題域和系統的任務。屬性能幫助我們更深入、更具體的認識類-&-對象和結構,換句話說,屬性能為“類-&-對象”以及“結構”提供更多的細節,因此,在一個系統中,確定屬性是非常重要的。
2.2 如何確定屬性
選擇屬性的過程包括分析和選擇兩步。一般來說,分析強調對象的外觀或功能,選擇則強調目標系統的需求。
屬性是對象的性質,通常用名詞詞組和形容詞來表示。首先,在需求陳述中找出屬性或通過分析找出屬性。這些屬性必須是問題域中對象的基本性質,而且在目標系統中是必要的。也就是說,只考慮與目標系統相關的屬性,不考慮超出目標系統范圍的屬性。然后,刪除不正確的和不必要的屬性,選擇正確的和必要的屬性。最后,恰當的給屬性命名。
刪除屬性的標準如下:
2.2.1 區別對象和屬性
對象是在應用領域內具有自身性質的實體。若某個實體的獨立存在相當重要,而相比之下它的值不那么重要,則應把它作為一個對象而不是對象的屬性。同一個實體在不同的應用領域中是作對象還是作屬性,需要根據應用需求具體分析而定。例如,在郵政目錄中,“城市”是一個屬性,而在人口普查中,“城市”卻看作為對象。
2.2.2 區別鏈屬性和屬性
在分析過程中,不應該把鏈屬性作為對象的屬性。若某個性質依賴于某個關聯鏈的存在,則該性質是鏈屬性而不是屬性。鏈屬性在多對多關聯中很明顯,在整個開發過程中,不要把它作為兩個關聯對象中任意一個的屬性。
2.2.3 區別限定詞和屬性
當屬性固定下來后,能減少關聯的階數時,則可將該屬性重新定義成為一個限定詞。如ATM系統中,分行代碼、聘員號、賬號和站號等都是限定詞,而不要把它誤認為屬性。再如,“分行代碼”不但可作為關聯“分行組成總行”上的限定詞,也可作為關聯“中央計算機”與“分行計算機”的限定詞,這樣,就將該關聯的一對多的通信關系減少為一對一的通信關系
2.2.4 區別內部值和屬性
若某個性質是對象的非公開的內部狀態時,則應該將這個屬性從對象模型中刪掉。
2.2.5 避免細化
一個對象的屬性不能過于細化,在分析過程中,應去掉那些對大多數操作沒有影響的屬性。
例如:經過精選后,確定的ATM系統中的各個類的屬性又增補了一些限定詞。
1) “卡號”:前面的分析過程中,遺漏了“分行發放現金兌換卡”這一關聯,現在發現了,因而就把“卡號”這個限定詞補上。
2) “賬號”是關聯“分行保管賬號”上的限定詞。
3) “聘員號”是關聯“分行聘用營業員”上的限定詞。
4) “站號”是關聯“分行擁有營業終端”、“營業終端與分行計算機通信”和“中央計算機與ATM通信”等上的限定詞。
面向對象方法以對象為基礎來構造系統,不是以功能為基礎來構造系統。這是一個基本認識。
屬性是用來描述類-&-對象的特性的。一個屬性是一個數據項(狀態信息),類中對象都有相應的值(狀態)。
屬性能幫助我們更深入、更具體的認識類-對象和結構。
確定屬性應注意方法,分清關聯、范圍限定和內涵性質是確定屬性的基本思想。
[1] 孫涌.軟件工程教程[M].機械工業出版社,2010,04.
[2] 張海藩.軟件工程導論[M].清華出版社,第三版,2011,1.
樊學東,副教授,西安外事學院教師,長期從事軟件開發和單片機、嵌入式等科研工作。