Please enable JavaScript.
Coggle requires JavaScript to display documents.
建立初步類別圖 - Coggle Diagram
建立初步類別圖
從使用案例尋找概念類別
使用案例的作用:詳細用文字描述使用者的需求
物件導向分析:找出使用者需求+從需求中找出系統所需要的類別
描繪初步類別圖
尋找概念類別 conceptual class
控制類別control class
企業邏輯
在設計階段才會慢慢加入
協調、控制、排序其他的類別
通常一個使用案例會對應一個控制類別(控制者Controller)來協調、控制、排序使用案例所用到的實體類別
命名:名稱後+Controller ex. NewOrderController
實體類別 entity class
一般類別
分析階段:使用案例找出的概念類別只針對企業邏輯和流程,所以僅是實體類別
分析過程尋找「最主要類別」,是個體(人、部門、交易等)的資訊和行為的結合
當系統需要記住某些個體的資訊,模式化這個個體的行為,這個個體就是實體類別
個體:實體類別
要記住的資訊:屬性
個體行為:操作或方法
命名:個體的實際名稱
物件導向中的實體類別其實是代表某個特定的資料型態也就是抽象資料型態,通常需要多個資料組成;程式語言中僅能定義簡單的資料型態,如整數、實數、字元
邊界類別boundary class
介面/畫面類別
將參與者輸入的資料傳遞給系統;將系統輸出的資料顯示給參與者
在設計階段才會慢慢加入
命名:名稱後+UI ex. CrmUI
模式化參與者與系統交談的功能(將輸出入介面與系統分開,用來處理畫面)
找出概念類別的方法
腦力激盪法:方便快速、沒有一定準則
經驗法則
使用既有的模型
使用種類列舉表
重點
可以成為類別的東西(things)一定是名詞
類別有基本的特徵,這些特徵可以使用表格記錄下來,也就是概念類別種類列舉表
有列舉表但在判斷上還是需要依靠以往的經驗或使用既有的模型修改
要清楚了解到物件的意義與種類
認定名詞片語:繁瑣、有循序的步驟
重點
找出文字敘述中的名詞或名詞片語
找出使用案例主要情節和例外情節中所有的名詞和名詞片語
列出所有名詞和名詞片語,經由比對和判斷,決定名詞是否為屬性或概念類別
缺點
有些名詞是概念類別,有些可能僅是類別的屬性
因應
區隔類別或屬性的最大原則:名詞如果不能以單一文字或數字表示,繼可能是概念類別,因為它代表一組資料,可以形成一個個體
屬性不會單獨存在於應用領域中,它會依附在某個類別(類別可以單獨存在)
雖然在使用案例的名詞中沒有出現,但幾從幾個出現的名詞組合看來可以形成一個單獨個體,處理上較為方便
並非每個參與者都可能是概念類別,要確認個體是否包含在系統之類
名詞和名詞片語會有同義的情形
系統輸出的不會是一個概念類別,除非將來系統需要知道其內容
描繪初步類別圖
建立類別間的關聯,並以圖形呈現(初步類別圖+系統循序圖+合約=領域模型)
尋找類別屬性
使用案例中有需多的名詞是為屬性的性質,將這些屬性放置到概念類別內,大部分的屬性從使用案例的描述中可以找出(可能有些較為隱性)
屬性:物件中的邏輯資料,也就是概念類別的特徵character
(概念類別>很多特徵(屬性)>每個特徵有一個值)
UML屬性表示方法: visibility name:data type
visibility:屬性的可見性(可視度)
public +:公用。這些方法和屬性可以在類別的裡面與外面被存取
protected #:保護。該變數或方法只能在類別以及子類別的內部存取
private -:私用。 該變數或方法只能在定義它們的類別內, 如果有一個新的類別繼承了宣告有private屬性或方法的類別, 新的類別以及所有的子類別將沒有辦法使用這些被宣告為private的屬性或方法
package ~
尋找概念類別屬性的遵循方法
概念類別的屬性以簡單資料型態為主,如果其屬性具有多重資料組合的型態,則應該將此屬性以另外的類別表示
如果不確定資料是屬性或是概念類別,先看成概念類別
同一個概念類別不可能有兩個相同屬性
不要包含能夠從別的屬性導出的屬性
尋找類別間的關聯
從使用案例的敘述中找出兩個概念類別的關係,並將它呈現出來。兩個概念類別的實例中存在折具有意義的連結,這個有意義的連結就是類別彼此間會透過訊息傳遞完成工作,連結時,使用一條連結線連結兩個有訊息傳遞的類別,稱之為關聯
描述關聯時要標示兩個類別之間的多重性(某一類別和另一類別關連的最小和最大數目),類別間的關係以數目來表示 ex. 1 0..*(一對多包含了一對一的關係)
關聯目的:清楚說明物件類別間的語意關係,所以除了多重性外還要關聯名稱(使用動詞並加上方向箭號,表示關聯名稱閱讀的方向)
共通關聯表common association list
符號:實線
類別圖的其他表示
類別圖:描述整體系統之個別類別內容和類別之間關係
(個別類別=類別名稱+屬性+方法)
類別之間關係
特殊關聯關係
表示類別與類別關係中的整體與部分whole-part。
組合composition
重點
表示較強的整體部分關係
類別不可以單獨存在,當合成體類別消除時,組成類別也必須要同時消除,組成類別也只能是唯一合成體類別的部分類別,不能同時為兩個合成體類別的組成
代表整體類別
合成體composite
代表部分類別
組成component
符號:實心菱形實線
聚合aggregation
代表部分類別
成分類別constituent
可以是多個集合體類別的成分類別
代表整體類別
集合體aggregate
符號:空心菱形實現
限制性關聯
一個類別間多重性為「1」的類別中具有一個或多個屬性,其值可以唯一決定多重性為「多」的物件,這些一個或多個屬性就稱為限制者qualifier,這樣表示的相關性稱作限制性關聯
符號:小方形附著在關連線的一端(多重性為一對一)
增加了從原始物件搜尋目標物件的訊息,增加類別圖的可讀性,也讓程式製作更為容易
繼承關係
子類別繼承了父類別(但子類別可能因為演算內容不同,所以會另外設計新方法覆載override父類別的方法。也就是子類別雖然使用與父類別相同的方法名稱,但重新定義了方法特性)
一般化
已經存在的類別中找出相同的屬性和方法,形成新的類別,然後由已存在的類別來繼承這個新的類別,這些已存在的類別就會變得比較單純,這個抽離出的新類別就是共通的父類別
特殊化
將不同性質一個一個地分出來,形成單獨的類別,並繼承原來的類別
判斷兩類別是否存在繼承關係
判斷子類別的物件是否可以成為父類別的物件,如果不能,就不能有繼承關係
父類別的關聯必須也是子類別的關聯,否則就不能有繼承關係
符號:實線箭頭表示繼承
介面關係
界定某一個個體的行為,但先不實作其具體的方法
介面類別不能宣稱屬性,只能用來規範其繼承的子類別使用特定的方法,它所宣稱的方法也僅是宣告而已,沒有具體實作,但繼承的子類別必須完全實作出來
符號:虛線箭頭、棒棒糖lollipop符號表示繼承
好處:即使介面改變,但只要繼承介面類別的實作類別不變,既可以確保基本操作方式是相同的
實體類別可以同時繼承多個介面類別
相依關係
關聯類別association class
兩個類別產生關聯後卻需要一個新的類別來存放共同的屬性資料
符號:虛線連結至原有的兩個類別間的關聯線
多對多的關聯
改成兩個一對多的關係
可以改成一般的關聯(形成一對一,將關聯類別的屬性併入多端的類別中),但缺點是如果此關聯類別又產生關聯,併入多端的類別之中方法就不是很好