不過,我只挑選了書中的第3.2.1小節來說明,主要在談現金銷售管理(cash-sale management)中的「現金銷售期間」(cash sale session)。之所以挑選這一小節,有兩個主要原因:第一個原因是,大部分人都有接觸過這個領域,所以比較容易理解;第二個原因是,它所涉及的類別比較少、複雜度低,方便用來做為說明範例。
現金銷售管理在談「現款取貨」(cash and carry)的情況。例如,我經常去二手書店買書,店裡通常只收現金、不接受信用卡、而且免開統一發票,諸如此類一手交錢一手交貨的現金交易,就適合採用現金銷售管理裡頭談的領域特定元件。
現金銷售管理細分為兩個子套件(package):現金銷售期間(CashSaleSession)與現金銷售(CashSale),如圖31所示。

圖31: 現金銷售管理套件
兩個子套件裡頭只有三個時間片段類別為:現金銷售期間套件中的收銀機作業類別(CashSaleSession::CashDrawerAssignment)、現金銷售期間類別(CashSaleSession::CashSaleSession),以及現金銷售套件中的現金銷售類別(CashSale::CashSale),如圖32所示。

圖32: 時間片段類別
61個領域特定元件彼此之間是有關係的,所以除了套件本身內部的類別外,還可能連接其他套件的類別。請看圖3,這是現今銷售期間套件內部的類別結構,這個套件內部定義了三個類別,分別為:收銀機作業(CashDrawerAssignment)、現金銷售期間(CashSaleSession)與收銀機(CashDrawer)。除此之外,它們還連接了現金銷售套件內的現金銷售類別(CashSale::CashSale),以及關係管理之個人角色子套件下的收銀員類別(RelMgmt::PersonRole::Cashier)。

圖33: 現金銷售期間
根據圖33的類別結構,我們假想出如圖4的情境圖,用假想情境來解釋抽象的類別圖,條列說明如下:
- 假設,邱郁惠是一名二手書店的收銀員。
- 邱郁惠在9/29上9:00~下午6:00以及9/30下午6:00~晚上10:00,都有操作收銀機處理銷售交易,所以在圖3中收銀員與收銀機作業之間為一對多的關係。
- 二手書店有兩台收銀機,邱郁惠在9/29上9:00~下午6:00以及9/30下午6:00~晚上10:00剛好都被分派使用到1號收銀機,所以在圖33中收銀機與收銀機作業之間為一對多的關係。
- 二手書店將整日的銷售期間分為上午、下午及晚上三個時段,所以說,邱郁惠在9/29日值了上午及下午兩個時段,而9/30日則值了晚上一個時段。參照看到圖33中收銀機作業與現金銷售期間之間為一對多的關係。
- 二手書店的生意很好,所以每個現金銷售期間都會發生多筆的現金銷售交易,所以在圖33中現金銷售與現金銷售期間之間為一對多的關係。
- 至於,圖33中收銀員與現金銷售期間之間的一對多關係,可以從收銀員與收銀機作業之間的關係,推衍得知。
- 還有,圖33中收銀員與現金銷售之間的一對多關係,也是可以從收銀員、收銀機作業與現金銷售期間三者之間的關係,一路推衍得知。

圖34: 情境圖
至於,圖33類別中的屬性(attribute)與操作(operation),我就不加以解釋了。一方面,因為不同的現金銷售專案可能都不盡相同。不過,您要是有空或者有需要使用到的時候,還是值得花一些時間推敲推敲的。
另一方面,書上其實並沒有對每一個類別以及其內部的屬性、操作做詳細的說明。或許,Peter Coad認為只要是這個領域的讀者都可以輕易理解這些類別結構,所以真要將這些類別結構用在實務上,還真得花些時間多多推敲推敲才行。
<上一篇><下一篇>

0 回應:
張貼意見