UML ------Unified Modeling Language (統一建模語言)
UML誕生于1997年,綜合了當時已經存在的多種面向對象的建模語言而形成的圖標式軟件設計語言.主要功能如下:
1.可視化功能:
可視化將促進對問題的理解和解決,方便設計人員彼此交流和溝通.
可以較容易發現設計草圖中可能的邏輯錯誤,保證最后完成的軟件能夠按要求運行,避免和減少意外發生.
2.說明功能:
是一個通用的,精確的,沒有歧義的對系統進行說明的機制.
3.建造功能:
UML有自己的語法規則,使得人們可以使用建模工具軟件對一個系統設計模型加以解釋,并將設計模型映射到一種計算機語言(如JAVA)上.
通過UML可以看到系統總體的圖像,可以很容易發現可復用的代碼,從而使系統更有效率.
4.建文檔功能:
使用UML進行設計可以同時產生系統設計文檔.
新加入項目的程序員可以借助UML圖形文檔資料很快熟悉開發中的系統.
UML包括一系列的圖:
1.結構型圖:?
??????類圖
??????對象圖
??????構件圖
??????部署圖
2.行為型圖:
??????使用案例圖
??????時序圖
??????合作圖
??????狀態圖
??????活動圖
所有這些圖中,類圖,使用案例圖和時序圖是最有用的.
類圖,是顯示出類和接口以及它們之間的靜態結構和關系的圖.如下:
----------------------------
??????????Animal
----------------------------
-age:int
-weight:double
----------------------------
+Animal
+Animal
+grow:void
+getAge:int
+getWeight:double
#die:void
----------------------------
name:String
可見,類圖是分層結構,最上面是類名層,往下是屬性層,方法層,性質層.
類名層不能省略,其他層都可以省略.
如果類名是正字體,表明類是具體的,如果是斜字體,表明類是抽象的.
注意屬性或方法的左邊的符號,
???如果是加號(+), 表示它是 public;
???如果是減號(-),?表示它是 private;
???如果是井號(#), 表示它是 protected;
如果在方法下面有下劃線,表明這是個靜態方法.
性質層是由一個屬性(內部變量),一個get方法,一個set方法組成的結構.
上面的UML圖可以解析成JAVA代碼,如下:
public
?
class
?Animal?{
?
//
私有屬性
?
private
?
int
?age;
?//私有屬性
?
private
?
double
?weight;
?//私有屬性
?
private
?String?name;
?
//
公開默認構造子
?
public
?Animal()?{
??
//
?}
?
//
公開構造子
?
public
?Animal(String?name)?{
??
this
.name?
=
?name;
?}
?
//
公開方法
?
public
?
void
?grow()?{
??
//
?}
?//公開方法
?
public
?
int
?getAge()?{
??
//
?}
?//公開方法
?
public
?
double
?getWeight()?{
??
//
?}
?
//
保護方法
?
protected
?
void
?die()?{
??
//
?}
?
//
公開方法
?
public
?String?getName()?{
??
return
?name;
?}
?//公開方法
?
public
?
void
?setName(String?name)?{
??
this
.name?
=
?name;
?}
}
類圖
中的
關
系
?
1
、
?
一般化
關
系(
Generalization
)
?
類
與
類
之
間
的
繼
承
關
系,接口與接口
間
的
繼
承
關
系,或者
對
接口的
實現關
系。
?
方向與
繼
承相反。從子
類
指向父
類
。
對應關鍵
字
為
extends
和
implements.
?
2
、
?
關聯關
系
( Association)
?
類
與
類
之
間
的
連
接,一個
類
可以知道另一個
類
的屬性和方法。
?
關聯
用
實線
+
箭
頭
來表示。
?
關聯
可以雙向,也可以是
單
向的。雙向
關聯
使用兩個箭
頭
或者沒有箭
頭
。
單
向
關聯
有一個箭
頭
,表示
關聯
的方向。一般多使用
單
向
關聯
,不鼓勵使用雙向
關聯
。
?
Java
中,
關聯
通
過實
例
變
量
實現
的。在一個
類
A
中,出
現
了
類
型
為
B
的
實
例
變
量,體
現
了兩個
類
之
間
的
關聯關
系。可以用一個箭
頭
指向
B
的
關聯
來表示它
們
的
關
系。
關聯
都有個名字。而且
還
可以有基數,表示
這
一端的
類
可以有幾個
實
例。
記
號
n..m
表示一個取
值
區
間
。
?
關聯關
系可以
進
一
步
確定
為
聚合
關
系或合成
關
系。
關聯關
系中兩個
類處
于同一
層
次。
?
3
、
?
聚合
關
系
( Aggregation)
?
聚合
關
系是更
強
的
關聯關
系。聚合是整體和部分之
間
的
關
系。聚合
關
系中的兩個
類
的
關
系是不平等的,是整體和部分的
關
系。也是通
過實
例
變
量
實現
的。一般的
關聯
和聚合
關
系需要通
過
兩個
類
的
邏輯關
系來區分。如果不確定,就將聚合
關
系
設
置成
關聯關
系。
?
表示方法:空心菱形+
實線
+箭
頭
,箭
頭
指向部分。
整體的一端用空心菱形表示,部分的一端用箭
頭
表示。
?
4
、
?
合成
關
系(
Comp os ition
)
?
合成
關
系是更
強
的聚合
關
系。合成
關
系不能共享。表示部分的
類
只能與一個表示整體的
類
建立合成
關
系。
?
代表整體的
對
象要
負責
代表部分的
對
象的生命周期。
負責
將代表部分的
對
象湮
滅
掉。也可以將代表部分的
對
象
傳遞給
另一個
對
象,由后者
負責
此
對
象的生命周期。
?
表示方法:
實
心菱形+
實線
+箭
頭
,
整體的一端用
實
心菱形表示,部分的一端用箭
頭
表示。如果不能確定
為
合成
關
系,可以將它
設
置
為
聚合
關
系,甚至是
關聯關
系。
?
5
、
依
賴關
系(
Dependency
)
?
依
賴總
是
單
向的。表示一個
類
依
賴
于另一個
類
的定
義
。與
關聯
不同是,此
處
沒有
類實
例作
為
屬性,而是將
類
B
的
實
例作
為
方法的參數
傳
入的。
?
表示方法:虛
線
+箭
頭
,箭
頭
指向作參數的
類
一方。
?
一般,在
Java
中表示
為
局域
變
量、方法的參數,以及
對
靜
態
方法的
調
用。
?
如果
類
A
的某個局域
變
量的
類
型是另一個
類
B
,那
么類
A
就依
賴
于
類
B
。
?
如果
類
A
方法的參數是
類
B
的
實
例,那
么類
A
依
賴
于
類
B
。
?
如果一個
類
A
調
用另一個
類
B
的靜
態
方法,那
么類
A
依
賴
于
類
B
。
?
如果
類
B
出
現
在
類
A
的
實
例
變
量中,那
么類
A
和
類
B
的
關
系就超越了依
賴關
系,而
變
成了某一
種關聯關
系。
?
注:
一般
關
系表
現為繼
承或
實現關
系
(is?? a)
,
關聯關
系表
現為變
量
(has?? a )
,依
賴關
系表
現為
函數中的參數
(use?? a)
。
posted on 2006-07-04 19:00
小言身寸 閱讀(499)
評論(0) 編輯 收藏 所屬分類:
UML