什么是對象?
在現實世界中的一個東西,只要是有概念或者是實體存在。
如:一名職工、一本圖書、一項貸款、一項生產計划、一場演出等。
幾種著名的面向對象方法
- UML(一種可視化建模語言,能描述開發需要的各種視圖,並以此為基礎組建系統。)
- OMT
- OOSE
面向對象的軟件開發模型
1、數據模型(對象模型):
描述系統數據結構的對象模型;
2、行為模型(動態模型)
描述系統控制結構
3、功能模型(用例圖)
描述系統功能。
一個典型的軟件系統使用數據結構(對象模型),執行操作(動態模型),並且完成數據值的變化(功能模型)。

功能模型——用例圖UCD
(1)用例圖的基本圖形符號
用例建模用於描述系統需求,把系統當作黑盒,從用戶的角度,描述系統的場景。
主要圖形元素有以下幾個:
參與者:是指外部用戶或外部實體在系統中扮演的角色。可以是一個人、一個計算機子系統、硬件設備或者時間等角色【一個小人兒】
用例:對一組動作序列的描述,系統通過執行這一組動作序列為參與者產生一個可觀察的結果。用例名往往用動賓結構命名。【一個橢圓】
執行關聯: 參與者(Actor )執行用例(Use Case)之間的關系【直線兒】

(2)用例建模的過程
建立用例模型的順序是:
1.確定誰會直接使用該系統。這些都是參與者(Actor)。
2.選取其中一個參與者。
3.定義該參與者希望系統做什么,參與者希望系統做的每件事成為一個用例。
4.對每件事來說,何時參與者會使用系統,通常會發生什么,這就是用例的基本過程。
5.描述該用例的基本過程。
6.考慮一些可變情況,把他們創建為擴展用例。
7.復審不同用例的描述,找出其中的相同點,抽出相同點作為共同的用例。
8.重復步驟2~7,找出每一個用例。
要素
(1)參與者
參與者(actor)是指系統以外的、需要使用系統或與系統交互的東西,包括人、設備、外部系統等。
參與者的三種表示形式

如何確定參與者?
在獲取用例前首先要確定系統的參與者,開發人員可以通過回答以下的問題來尋找系統的參與者。
(1)誰將使用該系統的主要功能?
(2)誰將需要該系統的支持以完成其工作?
(3)誰將需要維護、管理該系統,以及保持該系統處於工作狀態?
(4)系統需要處理哪些硬件設備?
(5)與該系統交互的是什么系統?
(6)誰或什么系統對本系統產生的結果感興趣?
示例:飲料自動售貨系統
在飲料自動售賣機中,最先想到的參與者是顧客。
其次,供應商向自動販賣機添加飲料。收銀員從自動販賣機收錢。

(2)用例(Use Case)
“用例”的定義
對一組動作序列的描述,系統通過執行這一組動作序列為參與者產生一個可觀察的結果
圖形表示
用橢圓形表示

用例特征
-
說明了系統具有的一種行為模式
-
說明了一個參與者與系統執行的一個相關的事件序列
-
提供了一種獲取系統需求的方法
-
提供了一種與最終的用戶和領域專家進行溝通的方法
-
提供了一種測試系統的方法
怎么獲取用例?
參與者希望用戶執行什么任務?
參與者在系統中訪問哪些信息(創建、存儲、修改、刪除等)?
需要將哪些外界信息提供給系統
需要將系統的什么事情告訴參與者
如何維護系統
(3)系統和關聯
系統:用於界定系統功能范圍,描述該系統功能的用例都置於其中,而描述外部實體的參與者都置於其外。

關聯:連接參與者和用例,表示參與者所代表的系統外部實體與該用例所描述的系統需求有關。

用例之間的關系
關聯(Association):、泛化(Inheritance)、包含(Include)、擴展(Extend)
(1)關聯(Association)
表示參與者與用例之間的通信,任何一方都可發送或接受消息。
【箭頭指向】:指向消息接收方
注:參與者可以參與多個用例,由此形成子系統

(2)泛化(Inheritance)
【箭頭指向】:指向父用例
就是通常理解的繼承關系,子用例和父用例相似,但表現出更特別的行為;子用例將繼承父用例的所有結構、行為和關系。
子用例可以使用父用例的一段行為,也可以重載它。父用例通常是抽象的。

(3)包含(Include)
【箭頭指向】:指向分解出來的功能用例
包含關系用來把一個較復雜用例所表示的功能分解成較小的步驟。一個用例可以包含另外一個用例。

(4)擴展(Extend)
【箭頭指向】:指向基礎用例
擴展關系是指用例功能的延伸,相當於為基礎用例提供一個附加功能。由一個用例的擴展點可以擴展出另外一個用例。

包含(include)、擴展(extend)的區別:
包含:在執行基本用例時,一定會執行包含用例部分
擴展:一個基本用例執行時,可以執行、也可以不執行擴展用例部分
關聯、包含、擴展、泛化 的區別:

舉例:自動售貨系統 初步的用例圖

用例擴展后的用例圖

用例實例一:ATM系統用例圖

用例實例二:圖書借閱系統用例圖


