在示範如何繪製課務系統的類別圖之前,我們先回顧一下課務系統之前的產出物,主要有圖1的課程報名流程的活動圖,以及圖2的課務系統用例圖。
圖1 課程報名流程的活動圖
圖2 課務系統的用例圖
至於,相關的用例敘述,此處有做局部更新,更新後如表1和表2。特別是原先的「通知已付訂」用例,此處更名為「通知已付款」。
由於,用例敘述的更新有影響到用例圖,所以此處我們同步更新用例圖,如圖6所示。
圖6 課務系統的用例圖[更新]
表1 填寫課程報名表的用例敘述 [更新] |
◎ 簡介 ◎ 主要流程 ◎ 條件:企業規則 ◎ 畫面雛型:報名畫面,參考圖3,課程說明,參考圖4 |
表2 通知已付款的用例敘述 [更新] |
◎ 簡介 ◎ 主要流程 ◎ 條件:企業規則 ◎ 補充資訊:畫面雛型 |
用例:填寫課程報名表
其實,尋找類別有很多方法,除了套用專家學者提出的樣式,我們也可以乾脆直接分析手頭上有的用例敘述、畫面雛型、文件報表等等。所以,現在我們就練習拆解前面圖3的報名畫面,試著找出類別、結合關係和屬性。
在報名畫面中,包含了數個資料項目,我們可以從中分析出相關的類別和屬性。就先從簡單明確的下手吧,所以我們先切出跟學員資料有關的區塊,分析如圖7所示。
圖7 學員
至於,學員的身分別可以直接定義一個資料型別為字串的屬性,也可以試著使用列舉型別,如圖8所示。
圖8 身分種類
接著,我們來看報名畫面的上半部,關於課程的部分,如圖9所示。比較特別的是,課程類別裡頭的開課日期,這個屬性的個體數目是「1,2,4」,那是因為目前開設的課程有一天、兩天和四天。如果不想這樣設定特別的天數的話,其實也可以直接設為「1..4」或者是「1..*」,這樣設定的彈性比較大,不過也就相對得較為不明確就是了。
圖9 課程
在課程的範例中,我們就先採用「1,2,4」好了,因為我想要示範比較少見的UML個體數目表示法。總之,UML個體數目可以有下列幾種表示法:
● 下限..上限:下限最小為0,上限最大為*(無限大)。
● 單一數字:單一數字代表下限數目和上限數目相同。
● 「*」(星號):「*」(星號)代表無限多,只出現一個星號的話,則代表「0..*」,相當於所有數目皆可。
● 幾個特定數字:如果是幾個特定的數字的話,數字之間要使用「,」(逗號)隔開,像我們前面的範例「1,2,4」。
● 混用:下限..上限,以及特定數字混用。例如「1..5,8,10」代表個體數目為1到5,以及8和10,其餘數目不被接受。到目前為止,我們除了獲得了身分種類、課程種類和地點種類這三個列舉型別外,主要還找到了學員和課程這兩個重要的類別,如圖10所示。
圖10 列舉型別
有趣的是,從學員和課程被放到同一個報名畫面來看,我們可以觀察出學員和課程兩者之間其實是有密切關係的,因此分析並建立了一條結合關係,如圖11所示。
圖11 學員與課程
對了,每一班的課程最多只招生25位學員,這是我們的企業規則,可以表達在學員端的個體數目上頭。
再者,請你看到圖12的結合關係性質表,我們可以幫結合關係取名稱,這樣一來,類別圖的觀看者便可以立即理解學員和課程之間的關係為何。
圖12 結合關係的名稱
當然,並非所有的資料都會出現在螢幕畫面上頭,所以如果我們只是單純從畫面雛型單一角度來尋找類別的話,絕對會有遺漏。
因此,我們還可以從用例敘述的內容來找尋看得到、或者隱藏在底下的相關資料。在簡單查看用例敘述之後,可以發現遺漏了像是報名代號之類這些跟報名有關的資訊,如表3所示。
表3 填寫課程報名表的主要流程 [局部] |
◎ 主要流程 |
所以,或許我們可以為此新增一個註冊類別,而且新增兩項屬性,分別名為:報名代號以及報名日期,如圖13所示。
圖13 註冊
接著,我們再把註冊類別放到類別圖中,看看它跟之前的學員和課程之間需不需要建立結合關係,如圖14所示。然後,你可以發現註冊類別其實取代了原先的報名結合,所以可以刪去原先的結合關係,形成圖15的樣子。
圖14 學員、課程與註冊
圖15 刪去學員與課程之間的結合關係
不過,還是有些從畫面雛型和用例敘述中,沒有辦法直接找到的隱藏細節。但是,也別過於擔心,到了繪製循序圖時,會再次檢驗類別圖,那時會再發掘出更多的細節。
最後,我們為課程類別增添了兩個屬性,分別為:人數限制和剩餘空位,前者用來記錄每門課最多招收多少學員,後者則用來紀錄目前還剩多少位子可以報名,如圖16所示。
圖16 人數限制與剩餘空位
而且,我還設定了人數限制的預設值為25,不過VS2010/UML沒有顯示出屬性的預設值,必須打開屬性的性質表才會看到預設值,如圖17所示。
圖17 屬性的預設值
用例:通知已付款
接著,我們繼續來分析通知已付款用例的畫面雛型,看看能找到什麼樣的類別和屬性,如圖18所示。
圖18 付款
由於,無論是繳付訂金、尾款或全額繳付都是共用付款類別,所以我們還可以額外加一個款項屬性來記錄付款種類,如圖19所示。
圖19 付款種類
再者,我們得記錄該項付款是針對哪次報名的,所以付款跟註冊之間會有靜態關係必須保存下來,為此我們得建立兩者之間的結合關係,如圖20所示。其中付款端的個體數目一共有三種狀況,條列如下:
● 0:還未繳費。
● 1:一次繳清全額。
● 2:先繳訂金,開課前繳尾款,所以一共有兩次付款。
圖20 註冊與付款
我們再回過頭查看通知已付款的用例敘述,看起來好像暫時沒有發現其他需要添加的細節。
對了,那我們怎麼知道這個學員要付多少學費以及已經繳了多少學費呢?所以,我們可以在註冊類別中新增兩個屬性,如圖21所示。
圖21 學費總額與已繳費用
最後,我們把目前為止,分析「填寫課程報名表」和「通知已付款」這兩個用例所找到的類別和列舉型別,分別列在兩張類別圖中,如圖22、圖23所示,這樣我們就完成了課務系統的2張類別圖。
圖22 類別圖[類別]
圖23 類別圖[列舉型別]
專欄作者
熱門新聞
2024-12-27
2024-12-24
2024-11-29
2024-12-22
2024-12-20