類別的設計
最近在畫Class Diagram,一直跳脫不出角色、流程、資料表等這3個關係,
經過1天總算有點心得了,在這邊記錄一下。
我是根據Use Case與Active Diagram來畫的
第一版,我把他依照角色來區分,可是不應該是這樣子的。
第二版,我轉成利用流程來思考,有抓到一點點眉角了,可是也不對。
Class Diagram主要是由Boundary、Control、Entity等組成
在畫時,我是以business logic來切割,如果是同一類的話,可以把他切到同一個Control,否則為另一個Control
這個沒有一定的畫法,因為每個人的思考邏輯都是不一樣的,但是也不是隨便亂畫的=.=
你在畫時,應該要講的出來你為什麼要這樣畫,這樣畫之後接下來該怎麼做,這些我覺得都是經驗
Boundary主要是UI介面的呈現,Control則是動作,而Entity可以把他想成是資料的集合(注意,Entity不要想成是Table)
在拉每一個Control時,要去思考他的獨立性,有沒有必要將其抽出來,而每一個Entity之間的關係也要去定義
這邊來講一般化關係、結合關係、聚合關係、組合關係
- 一般化關係
- 特殊物件必須是一種一般物件
- 在多種特殊物件裡,有部份相同的Attribute與Method,也有自己獨有的Attribute與Method
- 結合關係
- 2種物件之間有一種固定不變且需要保存的靜態關係 -> 偏向資料關係
- 2種物件通常是平等的
- 聚合關係
- 繼承結合關係
- 2種物件之間會有Whole-Part的靜態關係
- 也就是1個物件擁有另一個物件(如公司可以不要有員工)-強調擁有
- 組合關係
- 繼承聚合關係
- Part物件只能連結一個whole物件,且Whole物件被Destroy時,Part物件必須也被Destroy
- 也就是1個物件是另一個物件的一部份(創造一個人時,不能丟掉他的心)-強調不可分割
最後提一下,我是用IBM Rational Rose來畫的,如果有人也是用這個的話,可以一起來討論