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