標簽:uml
用例圖是解決用戶需求的圖,畫好用例圖一定要理清用例之間的關系。用例之間有三種關系:包含(include)擴展(extend)和泛化(generalization)。下面介紹三者的相同點和不同點以便區分:
相同點: 三者都是從現有的用例中抽取公共信息的那部分,作為一個單獨的用例,然后采用不同的方法來重用這個公共的用例。(感覺都是面向對象里的繼承思想,減少模型維護的工作量)。
不同點:
1.包含(include)
當兩個或多個用例中公用一組相同的動作,這時可以將這些相同的動作抽離出來作為一個獨立的子用例,供多個基用例所共享。因為子用例是被抽離出來的,所以基用例并非一個完整的用例。即在包含關系中基用例要和子用例一起使用才完整。子用例也必然被執行。
通俗的說,就是采用包含關系的幾個用例是被拆分的一個整體,大家相互依靠,缺一不可。
2.擴展(extend)
擴展關系是對基用例的擴展,基用例是一個完整的用例,即沒有子用例的參與也可以完成一個完整的功能。擴展用例為基用例添加新的行為。擴展用例可以訪問基用例的屬性,因此可以根據基用例中的擴展點的當前狀態來判斷是否執行自己。
通俗的說,就是基用例沒有擴展用例也能存活,但是有了擴展用例可以活的更精彩。
------------包含和擴展的關系類似于聚合和組合的關系。包含和組合一樣,大家都是有機的整體,缺了誰也不行。而擴展和聚合一樣,大家相互獨立,有了彼此可以讓生活更精彩,沒有也可以照自己的方式活著。。
3.泛化(generalization)
泛化關系,即我們常說的繼承關系。子用例和父用例相似,但表現出更特別的行為;子用例將繼承父用例的所有結構,行為和關系。子用例可以使用父用例的一段行為,也可以重載它。父用例通常是抽象的。
畫第一遍用例圖的時候根本沒考慮什么包含擴展,關系都是隨便的連線,第二遍才認識到了上文中的關系。重復的學習,不斷的思考才能深刻的理解知識,才能把存儲介質上的知識轉化成我們自己的知識,我們的力量。
標簽:uml
原文:http://blog.csdn.net/linxi1209163com/article/details/21369505