【文章內(nèi)容簡介】
是與顧客就餐有關(guān)的全部事物。出于這樣的考慮,在模型中應(yīng)當加入另一個類 CoatCheckClerk, 因為必須有人負責保管顧客的外套和帽子。 下面用一些表示關(guān)聯(lián)的動詞短語來標記上面產(chǎn)生的關(guān)聯(lián): 接著我們的注意力將轉(zhuǎn)移到關(guān)聯(lián)的多重性。在Customer與其他類的大部分關(guān)聯(lián)中,只涉及到類的一個實例。第二個關(guān)聯(lián)的動詞短語與其他關(guān)聯(lián)不同,它是被動語態(tài) (“ is served by”), 而其他關(guān)聯(lián)短語是主動語態(tài) (例如“ pays”和“ leaves”)。 這說明第二個關(guān)聯(lián)與其他關(guān)聯(lián)有某種不同之處。如果換成主動語態(tài),從服務(wù)員的觀點來看 (“ The Server serves a Customer”), 顯然一個 Server可以服務(wù)多名 Customer。 最后兩個關(guān)聯(lián)短語代表的是我們以前未遇到過的一種關(guān)聯(lián): ● The Customer checks a Coat with a CoatCheckClerk ● The Customer checks a Hat with a CoatCheckClerk 怎樣對這樣的關(guān)聯(lián)建模呢 ? 這種關(guān)聯(lián)被稱為三元關(guān)聯(lián) (ternary association)?!叭币馕犊慈齻€類同時參與一個關(guān)聯(lián)。在模型中,三元關(guān)聯(lián)用一個菱形框表示,在菱形框附近寫上關(guān)聯(lián)的名字,如下圖所示。三元關(guān)聯(lián)的多重性含義為當一個類的實例數(shù)量固定時,另外兩個類的多少個實例參與這個三元關(guān)聯(lián)。在本例中,指一個Customer可以從一個 CoatCheckClerk那里取回多于一件的 Coat。 參與一個關(guān)聯(lián)的類也可能超過三個。由于通用性的緣故,在 UML中這種關(guān)聯(lián)被稱為 n無關(guān)聯(lián) (nary association)。 下圖展示了添加了多重性后 Customer參與的關(guān)聯(lián)。 Server參與的關(guān)聯(lián) 讓我們用 CustomerServer之間的關(guān)聯(lián)作為出發(fā)點,繼續(xù)尋找 Server類參與的關(guān)聯(lián)。對 Server參與的關(guān)聯(lián)的一種建模方式是將這些關(guān)聯(lián)作為三元關(guān)聯(lián): ● The Server takes an Order from a Customer ● The Server takes an Order to a Chef ● The Server serves a Customer a Meal . . . 但是這樣表示的關(guān)聯(lián)無疑會使模型圖很復(fù)雜,不容易理解。更有效的方法是檢查這些關(guān)聯(lián),使用最少數(shù)量的關(guān)聯(lián)標記,并將 —些關(guān)聯(lián)表示為恰當?shù)? 關(guān)聯(lián)類。 Server的工作顯然可概括成“ take”和“ bring”?!癱ollect”是一種“ take”, “serve”是一種“ bring”。 我們可以將 Server參與的關(guān)聯(lián)標記為“ take”或“ bring”。 再在這些關(guān)聯(lián)上附加一個關(guān)聯(lián)類,在這個類中可以指明“ take”或“ bring”的是什么。為了達到這樣的目的,我們給關(guān)聯(lián)類中設(shè)置一個枚舉類型的屬性 item。 這個屬性可以取的值是 Server可能“ take”或“ bring”的東西。下圖顯示了活動中的關(guān)聯(lián)。 Server還同時與 Asssitant和 Busser關(guān)聯(lián),如下圖所示。 Chef參與的關(guān)聯(lián) Chef與 Server、 Assistant以及 Meal關(guān)聯(lián),如下圖所示。 Busser參與的關(guān)聯(lián) Busser的職責較少,所以關(guān)聯(lián)也較少,如下圖所示。 Manager參與的關(guān)聯(lián) Manager是我們在領(lǐng)域分析中引進的新類。這個類與許多其他類都有關(guān)聯(lián),這些關(guān)聯(lián)短語可表示如下: ● The Manager operates the Restaurant ● The Manager monitors the Employees ● The M