天天看點

UML用例圖中包含、擴充和泛化的差別

    在軟考複習下午題的時候,涉及UML圖時會有一個知識點就是用例圖中包含、擴充和泛化的差別。這裡我們就來總結一下。

1、包含<<include>>

包含是指當多個用例中存在相同的事件流時,可以把這些公共事件流抽象成公共用例,這個公共用例稱之為抽象用例(跟類的概念有點相像,類是多個對象的抽象定義),而原始用例稱為基礎用例,基礎用例與抽象用例之間就是包含關系。但是值得注意的是,對于包含關系而言,基礎用例是抽象用例執行中不可缺少的一部分,基礎用例一般不單獨存在且基礎用例不知道抽象用例的存在而抽象用例知道基礎用例的存在。包含關系是箭頭從抽象用例指向基礎用例(也就是從父類指向子類)。

2、擴充<<extend>>

如果一個用例明顯地混合了兩種或兩種以上不同的場景,可以将這個用例分為一個基礎用例和一個擴充用例。擴充關系用<<extend>>關系表示,箭頭指向基本用例(也就是從子類指向父類)。與此同時,擴充用例是基礎用例在某些特定條件下觸發産生的,擴充用例不是基礎用例必須存在的部分,擴充用例可以單獨存在,擴充用例知道基礎用例的存在而基礎用例不知道基礎用例的存在。

3、泛化<<>generalization>>

泛化關系是一種繼承關系,子用例将繼承基用例的所有行為,也就是任何使用基用例的地方都可以使用子用例來代替。我平時是這樣記住這個關系的,就是子類從父類中繼承,父類就是子類的泛化。因為泛化和繼承本就是一對反關系。泛化關系在用例圖中用空心箭頭表示,箭頭方向從子用例指向基用例。

    UML用例圖中的三種關系,include,extend和generalization,尤其是包含和擴充,一定要厘清它們二者的差別,這對我們掌握這部分的内容是很有幫助的。

繼續閱讀