4/15/2009

UML設計 - Class Diagram的 "屬性" 介紹

我們根據Addison-Wesley的UML精華第三版內容來探討..
首先講幾個部分..
UML的最大目的在當初也是針對軟體工業而產生的..
從最初標準混亂的時代...
到UML出現終於有一個共通的標準
軟體發展才得以持續下去..
不過要先知道..


其意義不在圖的價值,而是他所表達出來的 商業效益 或著 內容..


廢話不多說...
基本上類別圖(ClassDiagram)是編程人員最常使用的一種圖形表示法..
他基本上可以表達三個部分...
  1. 類別性質(Property)

  2. 類別操作(Operation)

  3. 限制條件(Constraint)

而類別的特徵(Feature)正是包含了性質操作...
然而類別性質又分為: 屬性(Attribute)關聯(Relation)這邊部分要談的就是屬性這塊..
屬性通常可以表達物件的 狀態...

其 狀態包含有動態的(和程式語言中的static修飾詞沒有任何關係!)與靜態的...

在OOP上..
我們可以說屬性可以是基本型別(Primitive Type)的變數或著他代表一個物件(Object)..
在目前流行的程式語言(ex: C#、Java)上..
通常物件是參照(Reference)的表示形式...

我們來看看下圖對於屬性的圖形表示:

Grady Booch這個粗體字表示為類別(Class)的名稱...
其中,中間的內容為屬性(Attribute)的表示內容...

來看看屬性文字敘述的正式定義:
visibility name: type multiplicity = default {property-string}

visibilty 表示的是屬性的可見範圍,大多可以是Public、Private或著Protected
name 當然就是屬性的名稱
type 表示屬性的型態,例如:String(string)、Boolean(bool)、int(Integer)、byte等等...
multiplicity 表示為多重性,例如:一對一、一對多等等...
可以有

  1. 1:表示一對一
  2. *:表示無上限也無下限
  3. 0..1:最多至一種,也可能沒有半個
至於多重性的 術語 表示..
我們以後再來講...
default 當然就是表示當沒有值的時候,預設值為多少。這很簡單,不需做任何解釋!...
{property-string} 表示當其他表示法不夠表達時,可以用這段來補充額外的屬性..
但是property-string的表達方式有很多種,我們以後再來談!

最後,再從圖上來..
其中+-的符號表示為public和private的可見性修飾詞,而protected則是用#表示..
[ ]裡面數值表達多重性
最後=符號後面接的是預設值..

圖形表示的方式很簡單..
至於,我們對應其程式碼如下:
class GradyBooch{
public String name="Grady Booch";
public String birthday;
public String[] phone;
public bool sex;
private String father;
private String mother;

}//end GradyBooch
程式碼的表達大概就是這樣子..


以上差不多就是這樣!