類別的設計

類別的設計

最近在畫Class Diagram,一直跳脫不出角色、流程、資料表等這3個關係,

經過1天總算有點心得了,在這邊記錄一下。

我是根據Use Case與Active Diagram來畫的

第一版,我把他依照角色來區分,可是不應該是這樣子的。

第二版,我轉成利用流程來思考,有抓到一點點眉角了,可是也不對。

 

Class Diagram主要是由BoundaryControlEntity等組成

在畫時,我是以business logic來切割,如果是同一類的話,可以把他切到同一個Control,否則為另一個Control

這個沒有一定的畫法,因為每個人的思考邏輯都是不一樣的,但是也不是隨便亂畫的=.=

你在畫時,應該要講的出來你為什麼要這樣畫,這樣畫之後接下來該怎麼做,這些我覺得都是經驗

 

Boundary主要是UI介面的呈現,Control則是動作,而Entity可以把他想成是資料的集合(注意,Entity不要想成是Table)

在拉每一個Control時,要去思考他的獨立性,有沒有必要將其抽出來,而每一個Entity之間的關係也要去定義

這邊來講一般化關係、結合關係、聚合關係、組合關係

  • 一般化關係
    1. 特殊物件必須是一種一般物件
    2. 在多種特殊物件裡,有部份相同的Attribute與Method,也有自己獨有的Attribute與Method
  • 結合關係
    1. 2種物件之間有一種固定不變且需要保存的靜態關係 -> 偏向資料關係
    2. 2種物件通常是平等的
  • 聚合關係
    1. 繼承結合關係
    2. 2種物件之間會有Whole-Part的靜態關係
    3. 也就是1個物件擁有另一個物件(如公司可以不要有員工)-強調擁有
  • 組合關係
    1. 繼承聚合關係
    2. Part物件只能連結一個whole物件,且Whole物件被Destroy時,Part物件必須也被Destroy
    3. 也就是1個物件是另一個物件的一部份(創造一個人時,不能丟掉他的心)-強調不可分割

 

最後提一下,我是用IBM Rational Rose來畫的,如果有人也是用這個的話,可以一起來討論