1.UML是Object Management Group推出的用於簡化複雜軟件工程流程的工具,使用UML,用戶可以定製並且可視化軟件和非軟件的設計。注意UML只是一種建模語言,它只定義了words和grammar,而並沒有定義建模的過程或流程。
2.上文中提到的靜態模型和動態模型的分類也可以如下分類,一共十二種圖:
STRUCTURE DIAGRAMS:可以用來代表一個應用的結構
- Class diagrams
- Object diagrams
- Component diagrams
- Deployment diagrams
BEHAVIOR DIAGRAMS:可以用來代表一個應用的行爲:
- Use Case diagrams
- Sequence diagrams
- Activity diagrams
- Collaboration diagrams
- Statechart diagram
MODEL MANAGEMENT DIAGRAMS:可以用來代表不同的程序模塊是如何組織和管理的:
- Packages
- Subsystems
- Models
此文只詳細介紹類圖和時序圖。
3.類圖詳解:
1)構成形式:
舉一個例子:
2)內部類:
我們使用諸如下邊的方式表示內部類,定義在方法區
例如:
3)訪問描述符:
對於Java,我們用如下的符號表示訪問描述符:
我們在下圖詳細說明了各個訪問描述符的一些權限設定:
4)抽象類和方法:
在類中定義的沒有body 的方法稱爲抽象方法,至少有一個抽象方法的類是抽象類。使用斜體來描述:
5)異常:
使用虛線以及箭頭表示:
6)便籤(包含限制、註釋和代碼解釋):
只用這種dog-eared 的框框:
7)泛化:描述一種繼承關係。
8)接口:
和類表示差不多,在前邊加上<>,
9)實現:
這是描述接口和具體實現的方式,有兩種表示方法:
或者:
10)依賴:
描述源和目的組件之間存在依賴關係,也就是說,一旦target有變,source就必須改變,而不是反之,看下邊的例子。
Order類利用DBUtil類的execute方法調用SQL語句,所以Order類依賴於DBUtil(DBUtil爲target)
11)類關聯:
多重性(Multiplicity ),修飾符暗示着實例之間的關係。一個類的一些實例與另一個類的實例有關,下圖是表示多重性的一些符號:
下邊有三種:
a)Navigability:當A包含有到達B的必須信息,也就是說A知道B,但是B不知道A。如下圖:
LogAbstraction 裏面有LoggerBridge類的實例。
當然這樣的也可能是雙向的,
b)Composition:類A包含類B
這個圖表達兩點意思:
A line item is part of an order.
A line item cannot exist without an order.
c)Aggregation:聚合,較之b更加輕量一些,
這個圖有兩點意思:
A Player is part of a Team.
A Player can be part of more than one Team and hence, when a Team
is dissolved, the Player still remains.
4.時序圖詳解:
1)時序圖對象:由類型和它前邊的冒號表示:
2)消息:
時序圖對象之間的通信,一般的,消息都是映射到類操作上的,若是並不是和類進行互動的話,比如一個用戶與ATM取款機的操作,那麼直接使用這樣的消息就不合適了。消息也可以表示business工作流。
3)自我調用:
時序圖對象作用於自身的一種消息,
我們在下邊舉一個綜合的時序圖小例子:
一個用戶在線先填寫註冊表單,所有提交的信息都先被Controller對象接收,Controller創建對象Account,並且把信息都存入Account對象,Account對象創建並且使用DBManager 將數據保存到數據庫中(使用自我調用)。