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