EA&UML日拱一卒 用例擴(kuò)展關(guān)系

用例擴(kuò)展關(guān)系
下面是ULM2.5.1中對用例擴(kuò)展關(guān)系的解釋。
擴(kuò)展是從擴(kuò)展用例到被擴(kuò)展用例的關(guān)系,它指定擴(kuò)展用例中定義的行為如何以及何時(shí)可以插入到被擴(kuò)展用例。擴(kuò)展發(fā)生在被擴(kuò)展用例中定義的一個(gè)或多個(gè)特定擴(kuò)展點(diǎn)。當(dāng)有一些額外的行為應(yīng)該被添加(可能有條件地)到一個(gè)或多個(gè)用例定義的行為時(shí),應(yīng)該使用擴(kuò)展。
被擴(kuò)展用例的定義獨(dú)立于擴(kuò)展用例,其含義也獨(dú)立于擴(kuò)展用例。另一方面,擴(kuò)展用例通常本身通常不必具有完整的含義。相反,擴(kuò)展用例定義了一組模塊化的行為增量,這些增量可以在特定條件下增強(qiáng)被擴(kuò)展用例的執(zhí)行。
注意:同一個(gè)擴(kuò)展用例可以擴(kuò)展多個(gè)用例。此外,擴(kuò)展用例本身可能被擴(kuò)展。
擴(kuò)展和包含
在實(shí)際的設(shè)計(jì)中經(jīng)常會(huì)將用例的擴(kuò)展和包含關(guān)系弄混。解決這個(gè)問題最關(guān)鍵的就是【額外】兩個(gè)字,如果設(shè)計(jì)者認(rèn)為該行為是必須的,就是包含;如果是【額外】的,就是擴(kuò)展關(guān)系。
擴(kuò)展實(shí)例
前面到文章說明了取款和轉(zhuǎn)賬的用例分析,除了共同的處理之外,還分別包含了執(zhí)行轉(zhuǎn)賬動(dòng)作和執(zhí)行取款動(dòng)作兩個(gè)用例。也有一些客戶,可能希望在執(zhí)行正常的轉(zhuǎn)賬或取款動(dòng)作的同時(shí),將執(zhí)行過的動(dòng)作記入動(dòng)作日志中。這個(gè)日志記錄動(dòng)作就可以看作是實(shí)際業(yè)務(wù)之外,即【額外】的行為。
注:這里的【看作】很重要,體現(xiàn)的設(shè)計(jì)者對建模對建模對象的看法。
以下是取款用例分析中使用用例擴(kuò)展關(guān)系的例子:

圖中黃色的是擴(kuò)展用例,綠色的是被擴(kuò)展用例。
同樣的擴(kuò)展用例也可以用于擴(kuò)展轉(zhuǎn)賬用例的行為:

作者著作介紹
《實(shí)戰(zhàn)Python設(shè)計(jì)模式》是作者去年3月份出版的技術(shù)書籍,該書利用Python 的標(biāo)準(zhǔn)GUI 工具包tkinter,通過可執(zhí)行的示例對23 個(gè)設(shè)計(jì)模式逐個(gè)進(jìn)行說明。這樣一方面可以使讀者了解真實(shí)的軟件開發(fā)工作中每個(gè)設(shè)計(jì)模式的運(yùn)用場景和想要解決的問題;另一方面通過對這些問題的解決過程進(jìn)行說明,讓讀者明白在編寫代碼時(shí)如何判斷使用設(shè)計(jì)模式的利弊,并合理運(yùn)用設(shè)計(jì)模式。

對設(shè)計(jì)模式感興趣而且希望隨學(xué)隨用的讀者通過本書可以快速跨越從理解到運(yùn)用的門檻;希望學(xué)習(xí)Python GUI 編程的讀者可以將本書中的示例作為設(shè)計(jì)和開發(fā)的參考;使用Python 語言進(jìn)行圖像分析、數(shù)據(jù)處理工作的讀者可以直接以本書中的示例為基礎(chǔ),迅速構(gòu)建自己的系統(tǒng)架構(gòu)。
覺得本文有幫助?請分享給更多人。
關(guān)注微信公眾號(hào)【面向?qū)ο笏伎肌枯p松學(xué)習(xí)每一天!
面向?qū)ο箝_發(fā),面向?qū)ο笏伎迹?/span>
