UML系列——用例圖中的各種關係(include、extend)

轉自:http://www.cnblogs.com/wolf-sun/p/3411175.html

用例圖中的各種關係

一、參與者與用例間的關聯關係

      參與者與用例之間的通信,也成爲關聯或通信關係。

二、用例與用例之間的關係

  • 包含關係(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.擴展關係

        對擴展用例的限制規則:將一些常規的動作放在一個基本用例中,將可選的或只在特定條件下才執行的動作放在它的擴展用例中。

      在分析的時候,參考他們的使用場合,你就會豁然開朗......

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章