用例圖中的三種關系包括、擴展、泛化


            用例圖使用戶 與開發者交流的一種重要的方式,是對用戶需求的一種描寫敘述。開發者從用戶的角度總體上理解系統的功能。

             用例圖主要有三種元素:參與者(Actor)。用例。以及用例圖中對象間到的關系。當中關系有包括、擴展是用例圖中特有的,泛化在其它類圖中相同存在。

             包括:當能夠從兩個或兩個以上的用例中提取公共行為時,應該使用包括的關系來表示它們。當中這個提取出來的公共用例成為抽象用例。而把原始用例成為基本用例或基礎用例。當中“<<include>>”是包括關系的構造型,箭頭指向抽象用例。

比如,在機房收費系統中“注冊學生信息”和“充值”兩個用例都須要操作員或者管理員登陸。為此,能夠定義一個抽象用例“用戶登陸”。用例“注冊學生信息”和“充值”與用例“用戶登陸”之間的關系就是包括關系。

如圖               

有時當某用例的事件流過於復雜時,為了簡化用例的描寫敘述,我們也能夠抽象出一個基用例,來包括這些顆粒的用例


       作用:當多個用例須要使用同一段事件流時。抽象成為公共用例,能夠避免在多個用例中反復地描寫敘述這段事件流。也能夠防止這段時間流在不同用例中的描寫敘述出現不一致。

當須要改動這段公共的需求時,也僅僅要改動一個用例,避免同一時候改動多個用例而產生的不一致和反復性工作。

另外,當某個用例的事件流過於復雜時,為了簡化用例的描寫敘述。也能夠將某段事件流抽象成為一個被包括的用例。

2、擴展關系

        假設一個用例明顯地混合了兩種或者兩種以上的不同場景,即依據情況可能發生多種分支,則能夠將這個用例分為一個基本用例和一個或多個擴展用例。這樣可能會使描寫敘述更加清晰。擴展用例為基用例加入新的行為。

擴展用例能夠訪問基用例的屬性,因此他能依據基用例中擴展點的當前狀態來決定是否運行自己。而擴展用例對基用例不可見。

如機房收費系統中“維護學生信息”操作時假設發現信息有誤或者更新則須要使用“改動學生信息”用例完畢更新,所以用例“查詢上機記錄”和“導出EXCEL”之間的關系就是擴展關系。“<<extend>>”是擴展關系的構造型,箭頭指向基本用例。

如圖                   

包括關系和擴展關系的聯系和差別

       聯系:都是從現有的用例中抽取出公共的那部分信息,作為一個單獨的用例。然后通后過不同的方法來重用這個公共的用例,以降低模型維護的工作量。

    差別:擴展關系中基本用例的基本流運行時,擴展用例不一定運行,即擴展用例僅僅有在基本用例滿足某種條件的時候才會運行。

         包括關系中基本用例的基本流運行時。包括用例一定會運行。

3、泛化

       當多個用例共有一種類似的結構和行為時。能夠將他們的共性抽象成為父用例,其它的用例作為泛化關系的子用例。在用例的泛化關系中。子用例是父用例的一種特殊形式。它繼承了父用例的全部結構、行為、關系。當中三角箭頭指向父用例。假如在機房收費系統的注冊能夠通過本地注冊和網上注冊。則

用例圖如           

相同。一般用戶,操作員,管理員之間也存在泛化的關系

如圖                  

轉:UML中擴展和泛化的差別 

       泛化表示類似於OO術語“繼承”或“多態”。UML中的Use Case泛化過程是將不同Use Case之間的可合並部分抽象成獨立的父Use Case。並將不可合並部分單獨成各自的子Use Case;包括以及擴展過程與泛化過程類似,但三者對用例關系的優化側重點是不同的。例如以下:
       ●泛化側重表示子用例間的相互排斥性;
       ●包括側重表示被包括用例對Actor提供服務的間接性;
       ●擴展側重表示擴展用例的觸發不定性;詳述例如以下:


      既然用例是系統提供服務的UML表述。那么服務這個過程在全部用例場景中是必定發生的。但發生依照發生條件可分為例如以下兩種情況:
      ⒈無條件發生:肯定發生的;
      ⒉有條件發生:未必發生,發生與否取決於系統狀態;

      因此,針對用例的三種關系結合系統狀態考慮,泛化與包括用例屬於無條件發生的用例,而擴展屬於有條件發生的用例。進一步。用例的存在是為Actor提供服務。但用例提供服務的方式可分為間接和直接兩種,根據於此,泛化中的子用例提供的是直接服務。而包括中的被包括用例提供的是間接服務。相同,擴展用例提供的也是直接服務,但擴展用例的發生是有條件的。

       另外一點須要提及的是:泛化中的子用例和擴展中的擴展用例均能夠作為基本用例事件的備選擇流而存在。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM