Peter Coad團隊發展出領域中立元件之後,將這樣的概念投入實務工作中,並且陸續找出共61組的「領域特定元件」(domain-specific component),在書中第二章到第五章的內容範圍中,正是在說明這61組領域特定元件。

不過,我只挑選了書中的第3.2.1小節來說明,主要在談現金銷售管理(cash-sale management)中的「現金銷售期間」(cash sale session)。之所以挑選這一小節,有兩個主要原因:第一個原因是,大部分人都有接觸過這個領域,所以比較容易理解;第二個原因是,它所涉及的類別比較少、複雜度低,方便用來做為說明範例。

現金銷售管理在談「現款取貨」(cash and carry)的情況。例如,我經常去二手書店買書,店裡通常只收現金、不接受信用卡、而且免開統一發票,諸如此類一手交錢一手交貨的現金交易,就適合採用現金銷售管理裡頭談的領域特定元件。

現金銷售管理細分為兩個子套件(package):現金銷售期間(CashSaleSession)與現金銷售(CashSale),如圖1所示。


圖1:時間片段類別


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


圖2:現金銷售管理套件


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


圖3:現金銷售期間


根據圖3的類別結構,我們假想出如圖4的情境圖,藉由假想情境來解釋抽象的類別圖,條列說明如下:


圖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號收銀機,所以在圖3中收銀機與收銀機作業之間為一對多的關係。

● 二手書店將整日的銷售期間分為上午、下午及晚上三個時段,所以說,邱郁惠在9/29日值了上午及下午兩個時段,而9/30日則值了晚上一個時段。參照看到圖3中收銀機作業與現金銷售期間之間為一對多的關係。

● 二手書店的生意很好,所以每個現金銷售期間都會發生多筆的現金銷售交易,所以在圖3中現金銷售與現金銷售期間之間為一對多的關係。

● 至於,圖3中收銀員與現金銷售期間之間的一對多關係,可以從收銀員與收銀機作業之間的關係,推衍得知。

● 還有,圖3中收銀員與現金銷售之間的一對多關係,也是可以從收銀員、收銀機作業與現金銷售期間三者之間的關係,一路推衍得知。

至於,圖3類別中的屬性(attribute)與操作(operation),我就不加以解釋了。一方面,因為不同的現金銷售專案可能都不盡相同。不過,您要是有空或者有需要使用到的時候,還是值得花一些時間推敲推敲的。

另一方面,書上其實並沒有對每一個類別以及其內部的屬性、操作做詳細的說明。或許,Peter Coad認為只要是這個領域的讀者都可以輕易理解這些類別結構,所以真要將這些類別結構用在實務上,還真得花些時間多多推敲推敲才行。

下一期是四色原型的最終期,將介紹在特徵驅動開發中,如何運用四色原型。文⊙邱郁惠

作者簡介:
邱郁惠
研究OOAD、UML、MDA十餘年,經歷過顧問、專案、教學及寫作工作。離職後創辦UML Blog推廣UML,組織《UML互助會》社群定期舉辦軟體技術講座,出版多本UML專業書籍與電子書。目前擁有OCUP/UML三級認證、PMP認證。

沒時間讀 UML/OOAD 書之挑讀筆記 第1回 四色原型(1)
沒時間讀 UML/OOAD 書之挑讀筆記 第2回 四色原型(2)
沒時間讀 UML/OOAD 書之挑讀筆記 第3回 四色原型(3)

熱門新聞

Advertisement