雖然很多書籍和文章講解了UML圖中的include和extend區分,但多數講的讓人看了似懂非懂的,在實際運用中仍然會遇到不少困難,是否有通俗易懂的講述了?請大家在這裡交流一下,我自己先說一下我的了解:
include主要是用例重用,是以通常至少有兩個用例包含共同的一個用例,如:
A include B,并且C include B,角色通常隻直接作用在包含另一用例的用例上,在本示例中,角色隻作用在A和C上,而不會直接作用于B上,這裡的B不直接面向觀衆,而A直接面向觀衆,可以看作C++的一個内部私有函數,B的存在隻是為了代碼重用,當然這裡是指用例重用;
而extend關系角色通常同時作用在擴充和被擴充用例上,如:A extend B,則角色即會直接作用于A也會直接作用于B,在這裡可以看出A和B存在一個可選關系,A和B直接面向觀衆,這裡A和B都是C++中的一個公有函數。
我的了解是extend其實也是一種include,但對于extend時include含義被弱化了,假設B extend A,則B應當是包含了A的邏輯的,但對于actor來說,B和A都是兩個獨立的邏輯,也就是說actor選擇執行A或B是可以選擇的,他可以選擇A或者B,但在選擇B時,實際上隐含執行了A,但對于include則不一樣,同樣假如B include A,則actor隻能執行B,則不能去選擇執行A而不執行B。