用例圖中的各種關系
一、參與者與用例間的關聯關系
參與者與用例之間的通信,也成為關聯或通信關系。
二、用例與用例之間的關系
- 包含關系(include)
- 擴展關系(extend)
包含關系
(1) 概念
包含關系描述的是一個用例需要某種功能,而該功能被另外一個用例定義,那么在用例的執行過程中,就可以調用已經定義好的用例。
(2)表示符號<<include>>
再如上篇文章中飲料自動售貨機的例子:
在代碼中用例的包含關系是什么呢?
1 class coat //外套 2 { 3 public string name; 4 public double price; 5 public coat(string myName, double myPrice) 6 { 7 name = myName; 8 price = myPrice; 9 } 10 public void pay() 11 { 12 discount(); 13 Console.WriteLine("該件外套的應付款為:{0}", price); 14 } 15 public void discount() 16 { 17 price = price * 0.8; 18 } 19 }
控制台程序
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 coat myCoat = new coat("勁霸", 1000); 6 Console.WriteLine("該外套的名稱為:{0}", myCoat.name); 7 Console.WriteLine("該外套的原價為:{0}", myCoat.price); 8 myCoat.pay(); 9 } 10 }
用例圖:
實例:圖書管理系統
圖書管理員處理借書或者還書時的用例圖,借書與還書都要考慮是否有overtime的書。
實例:訂單管理系統
(3)使用場合
a.如果兩個以上用例有大量一致的功能,則可以將這個功能分解到另一個用例中,其他用例可以和這個用例建立包含關系(如之前介紹的飲料自動售貨機)。
b.一個用例的功能太多時,可以使用包含關系建立若干個更小的用例。(如學生管理系統的用例圖)
實例:學生管理系統
(4)意義
它有助於將來實現系統時,確定哪些功能可以重用,在編寫代碼時就可以實現代碼的重用,縮短開發周期。
注意:執行基用例時,每次都必須調用被包含用例。
擴展關系
(1)概念
用一個用例(可選)擴展另一個用例(基本例)的功能。
(2)符號表示<<extend>>
代碼中是什么?
1 class coat //外套 2 { 3 public string name; 4 public float price; 5 6 public coat(string myName,float myPrice) 7 { 8 name = myName; 9 price = myPrice; 10 } 11 public void pay() 12 { 13 if (price > 800) 14 discount(0.9f); 15 Console.WriteLine("該件外套的應付款為:{0}",price); 16 } 17 18 public void discount(float x) 19 { 20 price = price * x; 21 } 22 }
控制台程序
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 coat myCoat=new coat ("勁霸",1000); 6 Console.WriteLine("該外套的名稱為:{0}",myCoat.name); 7 Console.WriteLine("該外套的原價為:{0}",myCoat.price); 8 myCoat.pay(); 9 } 10 }
用例圖
注意:擴展關系的箭頭方向
(3)使用場合
對擴展用例的限制規則:將一些常規的動作放在一個基本用例中,將可選的或只在特定條件下才執行的動作放在它的擴展用例中。
怎么區分是包含關系還是擴展關系?
通過上面的例子,怎么區分它們,你心里也有數了,其實在擴展關系中的使用場合也說明了,擴展關系的限制規則:將一些常規的動作放在一個基本用例中,將可選的或只在特定條件下才執行的動作放在它的擴展用例中。在使用的時候,你考慮這點就可以區分它們。
總結
1.包含關系
a.如果兩個以上用例有大量一致的功能,則可以將這個功能分解到另一個用例中,其他用例可以和這個用例建立包含關系(如之前介紹的飲料自動售貨機)。
b.一個用例的功能太多時,可以使用包含關系建立若干個更小的用例。(如學生管理系統的用例圖)
2.擴展關系
對擴展用例的限制規則:將一些常規的動作放在一個基本用例中,將可選的或只在特定條件下才執行的動作放在它的擴展用例中。
在分析的時候,參考他們的使用場合,你就會豁然開朗......
轉自:http://www.cnblogs.com/wolf-sun/p/3413072.html