曝光臺 注意防騙
網(wǎng)曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費(fèi)者
• 步驟1——標(biāo)識事物,并對它們進(jìn)行命名和定義。
• 步驟2——將事物組織為類層次。
• 步驟3——定義關(guān)系、元組數(shù)和約束。
• 步驟4——通過添加特性,將與對象相關(guān)的值詳細(xì)化。
1. 步驟1:命名事物
開始信息建模的最好方法是為系統(tǒng)中的事物設(shè)置名稱。其中“事物”通常是指實(shí)體、對象、
類或數(shù)據(jù)元素;這一步并不十分重要。我們將以上“事物”稱為對象類型。
首先要列出與系統(tǒng)相關(guān)的所有事物,例如:客戶、帳號、假期、旅館、度假勝地、國家、
預(yù)定或付款。有人建議首先對系統(tǒng)進(jìn)行文本描述,然后從中選出所有名詞。不管采用哪種方法,
這一步都不太困難;通常在較短的時間內(nèi)就能夠完成。
下一步是產(chǎn)生對象類型的定義,它可能需要耗費(fèi)更多的時間。以“假期”一詞為例,它的
定義要保證當(dāng)你看到假期時能夠識別它,而且對于某個事物是否是假期沒有爭論的余地。比如
你可以問以下問題:
• 如果兩個人一起旅游,應(yīng)該算作一個假期還是兩個假期?
• 未出售的假期是否仍然能夠算作假期,或者稱為其他事物?
• 如果客戶預(yù)定了一個假期,后來調(diào)整到其他日期,這是否仍然算作同一假期?
在建立這些定義時,我發(fā)現(xiàn)有兩類問題總是很有意義的。第一個是以下形式的問題:
• X是一個假期嗎?
通過測試一些不太確定的例子,能夠明確概念的邊界。第二個問題是:
• X和Y是相同的假期,還是不同的假期?
在此,我們不再討論X和Y是否是真正的假期,而是尋找能夠明確地區(qū)分特定假期的規(guī)則。
對于無形的對象,例如:飛行、頻道、服務(wù)或廣告活動,這類問題尤其重要。
你也許會發(fā)現(xiàn)不同的人對于這些問題的答案截然不同。有些人或許對什么是假期有完全不同的
看法,例如,他們可能認(rèn)為2 0 0 1年的復(fù)活節(jié)是一個假期。這就體現(xiàn)出信息建模的價值:它能夠排除
可能的誤解。在我曾經(jīng)工作過的一個機(jī)構(gòu)中,由于一個部門認(rèn)為零售商意味著位于特定位置的一個
商店,而另一個部門認(rèn)為是一家公司,它可能擁有多個商店,結(jié)果造成了數(shù)據(jù)的丟失。如果問這樣
一個問題:“達(dá)拉斯的Q u i c k F o o d與匹茲堡的Q u i c k F o o d是相同的零售商嗎?”,就能夠暴露這種誤解。
經(jīng)過上述過程,你有可能得到一長串的對象類型列表,其中某些可能有較長的名字,例如:
h o l i d a y - i n v e n t o r y - i t e m和p a r t y - h o l i d a y - r e s e r v a t i o n。如果有可能的話,選擇業(yè)界人士能夠正確理
解和解釋的名稱,因為他們不是總有時間查看你精心編寫的定義。
在本階段,由于我們側(cè)重于事物的標(biāo)識,因此除了命名對象類型之外,如何識別每個實(shí)例
也是值得考慮的。如何標(biāo)識單獨(dú)的假期?目前可能已經(jīng)存在用于標(biāo)識實(shí)例的代碼,你需要了解
這些代碼;或者你不得不重新發(fā)明一個新代碼;或者你可以使用某些特性的組合—例如:假
第4章數(shù)據(jù)建模與XML使用83 下載
期可能由客戶編號和起始日期的組合來標(biāo)識。在本階段中,常常能夠發(fā)現(xiàn)現(xiàn)有編碼機(jī)制中存在
的問題,例如:公司旅游部門可能用一個客戶編碼標(biāo)識來自特定公司的所有職員,而客戶服務(wù)
部門會給每個參加旅游的職員分配一個獨(dú)立的客戶編號。
因此在本步驟的結(jié)尾,我們將得到一個對象類型列表,其中的名稱和定義都獲得了一致的
同意。
2. 分類
分類是生物學(xué)中的術(shù)語,它是指分類系統(tǒng);在信息建模中,我們也將它稱為類型層次(有
人愿意將它稱為本體論)。既然已經(jīng)列出了所有對象類型,并給它們命名,現(xiàn)在,我們要將它們
組織到一個層次化的分類體系中。當(dāng)我們編寫對象類型的定義時,通常會形成這些層次關(guān)系。
以下定義都是很常見的,例如:
• 當(dāng)天往返假期是一個不包括預(yù)訂食宿的假期。
• 有三類食宿:旅館食宿、自備食物的食宿和營地食宿。
在這些定義中,關(guān)鍵詞是“ is a(是一個)”(或“is a kind of(是一種)”)。團(tuán)體假期是一個
假期,取消是一個事務(wù),定金是一個付款,素食菜單選擇是一個免費(fèi)項。如果你能寫下類似“ A
是一種B”或者“每個A都是B”的語句,就能夠在分類中標(biāo)識子類關(guān)系。
這有時被稱為i s - a測試:但是一定要謹(jǐn)慎,因為在英語中我們也常常用i s - a表示單個實(shí)例與
它的類型之間的關(guān)系:“Benidorm is a resort(B e n i d o r m是一個旅游勝地)”。實(shí)際上,在這里用
i s - a - k i n d - o f來表述更加安全。
正如我們將在后面看到的,標(biāo)識子類非常有用,但是更重要的,它有助于理解對象類型定
義。舉例來說,如果你的類層次錯誤地將客戶標(biāo)識為旅游者的子類,很可能有人會迅速發(fā)現(xiàn)錯
誤,并指出I B M是一個客戶,但是仍然要登飛機(jī)。
如果你習(xí)慣于面向?qū)ο缶幊蹋憔鸵呀?jīng)在定義類型層次中領(lǐng)先了,然而,你仍然面臨著潛在的
威脅,因為程序員通常主要依據(jù)系統(tǒng)中的功能模塊考慮對象類,而忽略了它們在外部世界中所表示
的內(nèi)容。如果你發(fā)現(xiàn)自己使用動詞而不是名詞來命名對象類型,那么你可能已經(jīng)落入了這個陷阱。
下面的例子顯示了我們將在假期業(yè)務(wù)中使用的類型層次的部分結(jié)構(gòu)(參見圖4 - 1)。它使用
U M L表示法,其中箭頭從子類指向超類。
圖4-1
84使用XML 高級編程
下載
客戶
提供者
個人客戶
公司客戶
旅游提供者
推薦提供者
飛機(jī)航線圖表
旅游車公司
飛機(jī)航線日程表
要了解更多有關(guān)U M L和表示法的信息,參見《Instant UML》(I S B N:1 - 8 6 1 0 0 - 0 8 7 - 1)。
你可以進(jìn)一步細(xì)化這張示意圖,但是在本階段,保持它的簡明性有助于理解它要傳達(dá)的主
要信息,并且?guī)椭銖挠脩裟抢铽@得反饋,說明他們是否正確理解了你要表述的概念。使用
Vi s i o等工具繪出這張示意圖是非常有價值的,它使你能夠擴(kuò)展或壓縮細(xì)節(jié)的層次,以便將同一
中國航空網(wǎng) www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(35)