Download presentation
Presentation is loading. Please wait.
1
第十一章 物件資料結構塑模
2
內容大綱 學習目標 第一節 導論 第二節 類別圖與物件圖 第三節 物件資料結構塑模 第四節 類別圖建構案例(一)
第五節 類別圖與物件圖建構案例(二) 第六節 結論
3
學習目標 詳讀本章,你至少能瞭解: 物件導向系統分析與設計中之資料結構塑模工作。 何謂類別圖、物件圖及其用途。
如何建構類別圖與物件圖及其建構準則。 如何以類別圖與物件圖進行物件資料結構塑模。
4
導論(1/2) 物件資料結構塑模主要以類別圖與物件圖表達系統之物件靜態的資料結構(主要用類別圖表達)。
由於在真實世界裡,物件的數量相當龐大,為降低問題的複雜度,在系統分析時大多採用類別,而較少用物件。 類別圖是用來描述系統中物件的類型、類型間以及與子類型間之靜態關係等。此外,類別圖還須表示類別的屬性、操作以及類別連結所應遵守的限制等。
5
導論(2/2) 物件圖是用於描述一系統於某一時間點的靜態結構,該圖是用於表達一個系統之複雜的資料結構,或藉由一時間序列的系統影像來表達系統的行為。
6
類別圖與物件圖(1/14) 類別圖包含兩個主要元件: 類別 關係
一個物件是問題領域中某個東西的抽象概念,例如某一課程、老師或學生等都可能是一個物件。物件是一個封包,它有名稱、屬性與操作。名稱是唯一的識別或辨識值。
7
類別圖與物件圖(2/14) 屬性表達物件之狀態、性質或特徵,而操作表達物件之行為。例如,某一課程是一個物件,它有課程編號與名稱為其屬性,且有計算成績方式為該物件的操作。 物件之操作不能單獨存在,必須與一個物件封裝在一起。 物件間可能有限制條件或商業規則,以限定物件屬性的值或行為。
8
類別圖與物件圖(3/14) 物件常用矩形表示,在矩形內表達名稱,並在名稱下加底線,如圖11-1a。
一群相關物件的定義、描述或樣板稱為一個類別,類別具有名稱、屬性與操作,同一類別之物件具有相同屬性與操作。類別常由矩形表示,該矩形之四邊為實線,如圖 b。
9
圖11-1a 物件之表示符號
10
圖11-1b 類別之表示符號
11
類別圖與物件圖(4/14) 類別間之關係 類別間的連結,在物件導向塑模中,類別間最重要的關係為: 相依關係(以虛線箭頭表示)
一般化關係(以實線的空心三角形箭頭表示) 關聯關係(以實線表示) 實現化關係(以虛線的空心三角形箭頭表示)
12
圖11-4a 類別間之關係與表示符號
13
類別圖與物件圖(5/14) 類別間並非完全獨立,彼此間須知道對方,才能解決某一工作。類別間之關係可分成兩種:靜態與動態關係。前者意味著一類別物件知道另一物件之存在或一物件會用到另一類別物件之服務,此種關係並不給予權限去改變另一類別物件之資訊;而後者意味著兩類別物件間有相互溝通。 相依關係(如圖11-4b) 是一種「使用」的關係,表達一個類別會用到其他類別,且被用類別的改變可能會影響到使用它的類別,但反之則不必然 ,關係之箭頭是由使用類別指向被使用類別。
14
圖11-4b 類別相依關係圖
15
類別圖與物件圖(6/14) 一般化關係(如圖11-5)
一般化關係指的是一般性類別(稱超類別或父類別)與僅具有此種一般性類別之某些特定性質之類別(稱次類別或子類別)間的關係。 一般化乃是類別間繼承的特性,其相反的特性即是特殊化。 一般化意味著子類別繼承其父類別的特性,尤其是父類別的屬性與操作 。
16
圖11-5 類別圖範例
17
類別圖與物件圖(7/14) 關聯關係(圖11-6) 關聯關係是一種類別間之靜態結構關係,描述類別與類別間之連結。
關聯關係意味著一類別之物件知道另一類別之物件的存在或一類別之物件使用到另一類別之物件的服務,但不是擁有此服務。 關聯關係如實體關係圖上之關係,可以有兩個類別參與稱二元關聯,也可以有兩個以上的類別參與稱多元關聯。
18
類別圖與物件圖(8/14) 若A類別與B類別間有關聯關係,指的是可從A類別之一個物件航向B類別之一個物件;反之亦然。
一般關聯關係若沒有箭號即表示雙向關係,若在類別間之關聯加上箭頭便表示具有適航性,表示可以依箭頭方向找到另一端之資訊 。
19
圖11-6 類別關聯圖
20
類別圖與物件圖(9/14) 類別間之關聯關係不見得一定要給予名稱,但您若覺得必要,常被採用的命名有兩種方式:
描述關係的本質:可用動詞或動詞片語表達 。 描述關係的角色:可用名詞或名詞片語表達 。
21
圖11-7a 關聯關係範例(一)
22
圖11-7b 關聯關係範例(二)
23
類別圖與物件圖(10/14) 在一個關聯關係中,常需表達有多少物件參與此關係,此種資訊與實體關係模式中之基數表達相同。
基數表示有多少個案例參與該關聯,這裡的「多少」稱為關聯角色的基數。 有三種關聯,分別為一對一(1:1)、一對多(1:N)或多對多(M:N),其中以阿拉伯數字1表示一,以英文字母N或M表示多,或用「*」表示多。
24
圖11-8a 基數範例(一)
25
圖11-8b 基數範例(二)
26
類別圖與物件圖(11/14) 聚集與組合均是關聯關係的一種特定變異,兩者之相同點均是描述整體與其組件之關係,也就是均表達一個「較大」類別之物件(整體)是由另一些「較小」類別之物件(組件)所組成。但組合是聚集的特例,組合有較強的限制。 聚集與組合的表達符號相同處是兩者均在整體端加一個菱形,不同的是聚集用空心的菱形,而組合用的是實心的菱形 。
27
圖11-9a 聚集與組合關聯關係圖(一)
28
圖11-9b 聚集與組合關聯關係圖(二)
29
類別圖與物件圖(12/14) 實現化關係 實現化關係表達某一類別之行為是由另一類別來描述。
在物件導向之領域中可允許某類別實現其他類別之描述,表示該實現類別必須順從某介面,但不需用繼承。
30
圖11-10 實現化範例
31
類別圖與物件圖(13/14) 類別圖上之限制 類別圖可以表達類別間之限制
限制之表達可用口語化的自然語言或用UML所提供的正式物件限制語言來描述。 在UML中允許用任何形式之描述來表達限制,但這些描述必須表達在大括號中({})。
32
類別圖與物件圖(14/14) 物件圖 是用於描述一系統於某一時間點的靜態結構。
該圖是用於表達一個系統之複雜的資料結構或藉由一時間序列的系統影像來表達系統的行為。 物件圖中有兩個主要元件:物件、連結線 。 物件圖所表達的資訊主要以類別圖為基礎。 表現系統在某一時間點上,各物件合作關係,但不表達物件間之訊息傳遞等其他資訊。 物件圖有時也稱為案例圖,也可以把物件圖想成沒有訊息傳遞的合作圖。
33
圖11-11 物件圖範例
34
物件資料結構塑模(1/2) 物件資料結構塑模之主要活動包括: 找出類別(或物件)及其屬性與操作 找出類別間之關係 建構類別圖與物件圖
原則上,一個使用個案須建立一個類別圖。 物件資料結構塑模可從使用個案來分析系統所包含之類別(包含名稱、屬性與操作)、類別間之關係等以建構類別圖。
35
物件資料結構塑模(2/2) 物件資料結構塑模的另一種作法是先進行物件互動行為塑模,再由所完成之互動圖(合作圖/循序圖)與使用個案圖做出類別圖。 這兩個方式若能交替進行,會讓塑模工作進行的更順利。
36
確認類別、屬性與操作(1/6) 確認類別(包含名稱、屬性與操作)須從每一個使用個案之情節描述中找出名詞、名詞片語與代名詞(以下通稱名詞),並判斷該名詞是類別或是類別屬性。此外,從動詞找出類別可能之操作。 為便於分析之進行,建議先準備一張類別彙總表(如表 ),配合分析之進行逐步將資料填入表中。
37
表11-1 類別彙總表
38
確認類別、屬性與操作(2/6) 確認類別之準則 找出名詞
從檢視使用者個案的情節描述,找出所有的名詞,並將找出之名詞填入表11-1之名詞欄中。基本上,每個名詞都有可能成為類別,稱為準類別,但並非每一個名詞都可成為類別。 在分析的過程中,從人物角色、組織單元、物件、地點及概念等方向來尋找類別。此外,與使用者高度的互動有助於找出有意義的類別,五種方向分別介紹如下:
39
確認類別、屬性與操作(3/6) 人物角色:所有與系統有關的人所扮演的角色,如客戶、業務員。 組織單元:由人員組成之群體,如業務部、專案小組。
物品:系統中除了人、組織以外之實體,如機器、產品。 地點:人、組織、物品所在之地方,如廠房、倉庫。 概念:系統中明顯可見,且有意義之非實體,如會計科目、成本。
40
確認類別、屬性與操作(4/6) 刪除不合適的類別 若名詞有下列的情況,將被視為不合適的類別,應予以刪除:
名詞若有重複,只保留一個,其餘刪除。 名詞被用來描述一個類別之特徵、值或狀態。 名詞是一個處理程序的名稱或演算公式。 依據上述準則判斷名詞欄是否為類別,若是則在類別欄中做記號,例如或○ ,否則類別欄為空白。
41
確認類別、屬性與操作(5/6) 確認屬性之準則 類別之屬性可用問題領域之專業知識及原始表單之資料項目來判斷(參考第6章)。
此外,屬性對類別要有意義,例如規格對產品是有意義的,但對支票是無意義的。原則上,一個屬性應盡可能僅屬於一個類別,例如客戶出現在送貨單上,但客戶名稱只屬於客戶類別,而不必再將其歸屬到送貨單。 填表時,若名詞欄為某類別之屬性,則在類別屬性欄填入類別之名稱。
42
確認類別、屬性與操作(6/6) 確認操作之準則
操作應該是描述類別的主要行為或責任。若使用個案之情節是以事件條列式描述,也就是採用(主詞)+動詞+受詞的方式表示,且條列中之主詞或受詞是類別,則其中的動詞就可能是類別之操作。 原則上,類別圖之操作描述主要描述系統之行為,盡量避免描述其細部之程式邏輯,因為這些程式邏輯在設計階段經常會再修改,因此類別圖之操作描述其實可以直接從使用個案之描述中摘錄過來。
43
確認類別間之關係(1/4) 主要的類別間之關係有 相依 一般化 關聯 實現化
44
確認類別間之關係(2/4) 找出類別間之關係可參考下列準則:假設有兩類別之物件A與B,若存在下列情況,則物件A與B間可能有關係。
一個類別會用到其他類別,且被使用類別的改變可能會影響到使用它的類別,則這兩類別間可能有相依關係。 某一類別(稱次類別或子類別)僅具有另一類別(稱超類別或父類別)之某些特定性質,例如屬性與操作,則這兩類別間可能建立一般化的關係。
45
確認類別間之關係(3/4) 一類別之物件知道另一類別之物件的存在,或一類別之物件使用到另一類別之物件的服務,但不是擁有此服務或訊息(或彼此間有訊息之溝通),則這兩類別間可能建立關聯關係。 在關聯關係中,若某一方由另一方聚集而成,也就是有整體與其組件之關係,則兩者間之關係可能是聚集或組合 。 若某一類別之行為是由另一類別來描述,則這兩類別間可能建立實現化關係 。
46
確認類別間之關係(4/4) 若類別間有關聯關係,則需進一步分析有多少個案例參與該關聯。
藉由該問題領域之專業知識或資料歸納等來判斷物件參與關聯之案例數目,以決定關聯基數為一對一、一對多或多對多。
47
類別圖建構案例(一)(1/2) 以夢幻系統之送貨處理使用個案中之新增送貨處理為例說明如何建構類別圖。該個案中,業務部與客戶為行為者,且該使用個案之情節如下: 新增送貨單編號與日期 輸入客戶資料(編號、名稱、地址與電話) 輸入客戶之送貨資料(成品編號、品名、規格、數量、單價) 更新成品庫存量 查詢稅率
48
類別圖建構案例(一)(2/2) 計算送貨單各項金額 設定折扣數和折讓金額 計算小計 = Σ(數量×單價)
計算送貨單未稅金額=小計×折扣數-折讓金額 計算稅額=送貨單未稅金額×稅率 計算送貨單總金額=送貨單未稅金額 + 稅額 儲存送貨單
49
確認類別與屬性 建構類別圖須先確認類別與屬性,經逐一檢討上述情節描述之各名詞,並配合與使用者互動及領域知識判斷可知,送貨單是個原始表單,因此是一個類別。同理,客戶、送貨明細、成品及稅率等也都屬於類別。其餘詳如表11-2。
50
表11-2 送貨處理類別彙總表
51
確認關係(1/4) 依表11-2可知,共找出送貨單、客戶、送貨明細、成品及稅率等五個類別,再依據使用個案情節描述及從領域知識之判斷得知:
送貨單與客戶、送貨明細與稅率間有關聯關係,因為前者需要後面三者之資訊,故關聯之箭頭分別由送貨單指向後面三者(參考圖11-12a)。
52
圖11-12a 送貨單與客戶之關聯
53
確認關係(2/4) 送貨單與送貨明細之基數為一對多之關係,也就是一張送貨單可以有多個送貨明細(參考圖11-12b)。
54
圖11-12b 送貨單與送貨明細之關聯
55
確認關係(3/4) 送貨單與稅率之基數為多對一之關係,也就是一種稅率可適用於多張送貨單,但一張送貨單只有一種稅率,且送貨單送訊息給稅率,請求提供資訊(參考圖11-12c)。
56
圖11-12c 送貨單與稅率之關聯
57
確認關係(4/4) 送貨明細與成品間有關聯,因為前者需要後者之資訊,故關聯之箭頭由送貨明細指向成品。送貨明細與成品間之基數為多對一之關係,也就是一個成品可出現在多個送貨明細中,且一個送貨明細只擁有一個成品(參考圖 d)。
58
圖11-12d 送貨明細與成品之關聯
59
圖11-12e 送貨處理類別圖
60
類別圖與物件圖建構案例(二)(1/2) 以西子灣公司線上訂購系統之使用個案為例,說明如何建構類別圖與物件圖,各個使用個案之情節描述簡述如下 : 新增訂購項目個案 客戶點選瀏覽書籍產品型錄 系統顯示書籍產品細部說明(給客戶) 客戶新增訂購項目(產品)入購物車 客戶設定訂購數量(購物車內產品) 系統計算購物車內訂購總金額
61
類別圖與物件圖建構案例(二)(2/2) 修改訂購數量 客戶設定(修改)訂購數量(購物車內產品) 系統計算購物車內訂購總金額 刪除訂購數量
客戶刪除(購物車內)訂購項目 取消採購訂單 客戶清空購物車中所有產品(取消採購訂單) 確認採購訂單 客戶確認(購物車內之)採購訂單 系統接收訂單
62
確認類別、屬性與操作 新增訂購項目個案 表11-3 新增訂購項目類別彙總表 修改訂購數量個案 表11-4 修改訂購數量類別彙總表
表11-4 修改訂購數量類別彙總表 刪除訂購數量個案 表11-5 刪除訂購數量類別彙總表 取消採購訂單個案 表11-6 取消採購訂單類別彙總表 確認採購訂單個案 表11-7 確認採購訂單類別彙總表
63
確認關係(1/3) 新增訂購項目個案 客戶與購物車之間,購物車中會記錄客戶的資訊,因此客戶與購物車之間有關係,是關聯之關係,因為後者需要前者之資訊,且兩者間之基數為一對多。也就是,一個客戶可擁有多個購物車(在不同時間),而一個購物車只能屬於一個客戶。 同樣地,購物車與書籍產品型錄之間,購物車也會記錄書籍產品的資訊,因此購物車與書籍產品間有關係,也是關聯之關係,因為前者需要後者之資訊,且兩者間之基數為多對多,也就是一個購物車內可包括多個書籍產品,而一本書籍也能屬於不同的購物車。
64
確認關係(2/3) 修改訂購數量個案 客戶與購物車間之關係與基數,如新增訂購項目個案所述。 刪除訂購數量個案 取消採購訂單個案
65
確認關係(3/3) 確認採購訂單個案 客戶與購物車間之關係與基數,如新增訂購項目個案所述。
購物車與訂單間有關係,因為訂單是由購物車轉來,一個購物車會轉成一張訂單,因此兩者間之基數為一對一的認知關係。
66
圖11-13a 新增訂購項目個案類別圖
67
圖11-13b 修改訂購數量個案類別圖
68
圖11-13c 刪除訂購數量個案類別圖
69
圖11-13d 取消採購訂單個案類別圖
70
圖11-13e 確認採購訂單個案類別圖
71
繪製類別圖 最後將各使用個案之類圖匯總成一個類別圖,並將分散在不同類別圖上的相同類別之屬性與操作合併(取聯集)。
72
圖11-13f 西子灣公司訂購系統類別圖
73
圖11-14 西子灣公司訂購系統物件圖案例
74
結論 應用類別圖與物件圖來表達一個系統類別間之靜態結構關係,及類別內部之屬性與操作等資訊。
每一個使用個案須建立一個類別圖,且建構類別圖所需之資訊主要來自於使用個案圖或互動圖及與使用者之互動。
Similar presentations