用例與用例之間都有哪些關係。
1.關聯關係
定義:參與者與用例之間通常用關聯關係來描述。
表示方法:帶箭頭的實線,箭頭指向用例。
如圖所示:
2. 泛化關係
定義:一個用例可以被特別列舉為一個或多個子用例,這被稱為用例泛化。
泛化關係在類間也有。
子用例從父用例處繼承行為和屬性,還可以新增行為或覆蓋、改變已繼承的行為。
表示方法:帶空心箭頭的實線,箭頭指向被泛化(被繼承)的用例,即父用例。(PS:泛化關係的箭頭不是指向被泛化,而是指向被繼承。泛化和繼承是不同的方向。泛化是從下到上的抽象過程,繼承是從上到下,從一般到特殊的過程。)
機房收費系統中可以這樣應用:
當系統中具有一個或多個用例是一般用例的特化時,就使用用例泛化。
3.包含關係
定義:其中一個用例(基礎用例)的行為包含了另一個用例(包含用例)的行為。基礎用例可以看到包含用例,並依賴於包含用例的執行結果。但是二者不能訪問對方的屬性。
表示方法:虛線箭頭+>字樣,箭頭指向被包含的用例。
使用情況:
(1)如果兩個以上用例有重複的功能,則可以將重複的功能分解到另一個用例中。其他用例可以和這個用例建立包含關係。
(2)一個用例的功能太多時,可以用包含關係建立多個子用例。
4.擴充套件關係(extend)
定義:是把新行為插入到已有用例的方法。
個人感覺可以叫做特殊情況處理。比如去食堂用飯卡打飯,絕大部分人是刷卡,拿飯,兩個步驟就完成了。但是如果某個學生的飯卡里沒錢了,假定不用現金或者借錢或者賒賬等等其他的方式來打飯,而是必須用自己的飯卡來打飯。那麼他就要先去給飯卡充值。“飯卡充值”就是“刷卡”的一個擴充套件用例。“飯卡充值”與“刷卡”就是擴充套件關係。
表示方法:虛線箭頭+>字樣,箭頭指向被擴充套件的用例(即基礎用例)。
作用:為處理異常或構建靈活系統框架提供了一種有效的方法。
對比:
包含與擴充套件的區別。在擴充套件關係中,基礎用例沒有擴充套件也是完整的,而在包含關係中,基礎用例依賴於包含用例的執行結果。
總結:
所有的箭頭指向都是“被”的一端。
找關係,是一件挺複雜的事兒。從不同的角度看會有不同的結果。找到大前提,再理順特定環境下的關係,會更加順手。
用例與用例之間都有哪些關係。
1.關聯關係
定義:參與者與用例之間通常用關聯關係來描述。
表示方法:帶箭頭的實線,箭頭指向用例。
如圖所示:
2. 泛化關係
定義:一個用例可以被特別列舉為一個或多個子用例,這被稱為用例泛化。
泛化關係在類間也有。
子用例從父用例處繼承行為和屬性,還可以新增行為或覆蓋、改變已繼承的行為。
表示方法:帶空心箭頭的實線,箭頭指向被泛化(被繼承)的用例,即父用例。(PS:泛化關係的箭頭不是指向被泛化,而是指向被繼承。泛化和繼承是不同的方向。泛化是從下到上的抽象過程,繼承是從上到下,從一般到特殊的過程。)
機房收費系統中可以這樣應用:
當系統中具有一個或多個用例是一般用例的特化時,就使用用例泛化。
3.包含關係
定義:其中一個用例(基礎用例)的行為包含了另一個用例(包含用例)的行為。基礎用例可以看到包含用例,並依賴於包含用例的執行結果。但是二者不能訪問對方的屬性。
表示方法:虛線箭頭+>字樣,箭頭指向被包含的用例。
使用情況:
(1)如果兩個以上用例有重複的功能,則可以將重複的功能分解到另一個用例中。其他用例可以和這個用例建立包含關係。
(2)一個用例的功能太多時,可以用包含關係建立多個子用例。
4.擴充套件關係(extend)
定義:是把新行為插入到已有用例的方法。
個人感覺可以叫做特殊情況處理。比如去食堂用飯卡打飯,絕大部分人是刷卡,拿飯,兩個步驟就完成了。但是如果某個學生的飯卡里沒錢了,假定不用現金或者借錢或者賒賬等等其他的方式來打飯,而是必須用自己的飯卡來打飯。那麼他就要先去給飯卡充值。“飯卡充值”就是“刷卡”的一個擴充套件用例。“飯卡充值”與“刷卡”就是擴充套件關係。
表示方法:虛線箭頭+>字樣,箭頭指向被擴充套件的用例(即基礎用例)。
作用:為處理異常或構建靈活系統框架提供了一種有效的方法。
對比:
包含與擴充套件的區別。在擴充套件關係中,基礎用例沒有擴充套件也是完整的,而在包含關係中,基礎用例依賴於包含用例的執行結果。
總結:
所有的箭頭指向都是“被”的一端。
找關係,是一件挺複雜的事兒。從不同的角度看會有不同的結果。找到大前提,再理順特定環境下的關係,會更加順手。