日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UML之用例图(use case)箭头方向

發(fā)布時間:2023/12/10 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UML之用例图(use case)箭头方向 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、Association,無箭頭,Actor連接UseCase即可;

2、DirectedAssocition,Actor連接UseCase,箭頭由Actor指向UseCase(角色指向用例);

3、Generalization,繼承,我把它念成“繼承于”,當(dāng)然是箭頭由子指向父啦;?
4、Dependency,我念成“依賴于”,就知道箭頭方向了;

5、Include,我念成“包含了”,箭頭由包含者指向被包含者;?
6、Extend,我念成“擴展于”或“擴展自”,箭頭由擴展出來的“子”指向它的“父”;?


總結(jié):除了包含方向外,其它都是“小”的指向“大”的,“子”指向“父”,“一般”指向“抽象”。

?

UML中描述對象和類之間相互關(guān)系的方式包括:依賴(Dependency),關(guān)聯(lián)(Association),聚合(Aggregation),組合(Composition),泛化(Generalization),實現(xiàn)(Realization)等。

  • 依賴Dependency:元素A的變化會影響元素B,但反之不成立,那么B和A的關(guān)系是依賴關(guān)系,B依賴A;類屬關(guān)系和實現(xiàn)關(guān)系在語義上講也是依賴關(guān)系,但由于其有更特殊的用途,所以被單獨描述。uml中用帶箭頭的虛線表示Dependency關(guān)系,箭頭指向被依賴元素。
  • 泛化(Generalization:通常所說的繼承(特殊個體 is kind of 一般個體)關(guān)系,不必多解釋了。uml中用帶空心箭頭的實線線表示Generalization關(guān)系,箭頭指向一般個體。
  • 實現(xiàn)(Realize:元素A定義一個約定,元素B實現(xiàn)這個約定,則B和A的關(guān)系是Realize,B realize A。這個關(guān)系最常用于接口。uml中用空心箭頭和虛線表示Realize關(guān)系,箭頭指向定義約定的元素。
  • 關(guān)聯(lián)(Association:元素間的結(jié)構(gòu)化關(guān)系,是一種弱關(guān)系,被關(guān)聯(lián)的元素間通??梢员华毩⒌目紤]。uml中用實線表示Association關(guān)系,箭頭指向被依賴元素。
  • 聚合(Aggregation:關(guān)聯(lián)關(guān)系的一種特例,表示部分和整體(整體 has a 部分)的關(guān)系。uml中用帶空心菱形頭的實線表示Aggregation關(guān)系,菱形頭指向整體。
  • 合(Composition:組合是聚合關(guān)系的變種,表示元素間更強的組合關(guān)系。如果是組合關(guān)系,如果整體被破壞則個體一定會被破壞,而聚合的個體則可能是被多個整體所共享的,不一定會隨著某個整體的破壞而被破壞。uml中用帶實心菱形頭的實線表示Composition關(guān)系,菱形頭指向整體。

1.1.1?????? 依賴(Dependency):虛線箭頭表示

1、依賴關(guān)系也是類與類之間的聯(lián)結(jié)
2、依賴總是單向的。(#add 注意,要避免雙向依賴。一般來說,不應(yīng)該存在雙向依賴。)
3、依賴關(guān)系在 Java 或 C++ 語言中體現(xiàn)為局部變量、方法的參數(shù)或者對靜態(tài)方法的調(diào)用。

(軟件開發(fā)中,往往會設(shè)計一些公用類,供別的類調(diào)用,如果這些公用類出問題了,那調(diào)用這些公用類的類都會因此而出問題。?
兩個元素之間的一種關(guān)系,其中一個元素(提供者)的變化將影響另一個元素(客體),或向它提供所需信息
顯示一個類引用另一個類)

方法參數(shù)示例:

public class Person {void buy(Car car){...} }

表示方法:虛線加箭頭

特點:當(dāng)類與類之間有使用關(guān)系時就屬于依賴關(guān)系,不同于關(guān)聯(lián)關(guān)系,依賴不具有“擁有關(guān)系”,而是一種“相識關(guān)系”,只在某個特定地方(比如某個方法體內(nèi))才有關(guān)系。

依賴關(guān)系可以分為以下四類:

1)? 使用依賴(Usage)表示客戶使用提供者提供的服務(wù)以實現(xiàn)它的行為,包括:

  • 使用<<use>>--聲明使用一個類時需要用到已存在的另一個類。
  • 調(diào)用<<call>>--聲明一個類調(diào)用其他類的操作的方法。
  • 參數(shù)<<parameter>>--聲明一個操作和它的參數(shù)之間的關(guān)系。
  • 發(fā)送<<send>>--聲明信號發(fā)送者和信號接收者之間的關(guān)系。
  • 實例化<<instantiate>>--聲明用一個類的方法創(chuàng)建了另一個類的實例。

2)? 抽象依賴(Abstraction)表示客戶與提供者之間用不同的方法表現(xiàn)同一個概念,通常一個概念更抽象,一個概念更具體。包括:

  • 跟蹤<<trace>>--聲明不同模型中的元素之間存在一些連接但不如映射精確。
  • 精化<<refine>>--聲明具有兩個不同語義層次上的元素之間的映射。
  • 派生<<derive>>--聲明一個實例可以從另一個實例導(dǎo)出。

3)? 授權(quán)依賴(Permission)表達提供者為客戶提供某種權(quán)限以訪問其內(nèi)容的情形。包括:

  • 訪問<<access>>--允許一個包訪問另一個包的內(nèi)容。
  • 導(dǎo)入<<import>>--允許一個包訪問另一個包的內(nèi)容并為被訪問包的組成部分增加別名。
  • 友元<<friend>>--允許一個元素訪問另一個元素,不管被訪問的元素是否具有可見性。

4)? 綁定依賴(Binding)較高級的依賴類型,用于綁定模板以創(chuàng)建新的模型元素,包括:

  • 綁定<<bind>>--為模板參數(shù)指定值,以生成一個新的模型元素。

?

1.1.2?????? 關(guān)聯(lián)(Association):實線箭頭表示

1、關(guān)聯(lián)關(guān)系是類與類之間的聯(lián)結(jié),它使一個類知道另一個類的屬性和方法。
2、關(guān)聯(lián)可以是雙向的,也可以是單向的(#add還有自身關(guān)聯(lián))。雙向的關(guān)聯(lián)可以有兩個箭頭或者沒有箭頭,單向的關(guān)聯(lián)有一個箭頭。
3、在 Java 或 c++ 中,關(guān)聯(lián)關(guān)系是通過使用成員變量來實現(xiàn)的。

public class 徒弟 { }public class 唐僧 {protected: list<徒弟> tdlist; }

表示方法:實線箭頭

特征:表示類與類或類與接口之間的依賴關(guān)系,表現(xiàn)為“擁有關(guān)系”;具體到代碼可以用實例變量來表示。(A類有一個成員變量保存的是B類的一個引用,也就是說由A類可以找到B類)

1.1.3?????? 聚合(Aggregation):帶空心菱形頭表示

1、聚合關(guān)系是關(guān)聯(lián)關(guān)系的一種,是強的關(guān)聯(lián)關(guān)系。
2、聚合是整體和部分之間的關(guān)系,例如汽車由引擎、輪胎以及其它零件組成。
3、聚合關(guān)系也是通過成員變量來實現(xiàn)的。但是,關(guān)聯(lián)關(guān)系所涉及的兩個類處在同一個層次上,而聚合關(guān)系中,兩個類處于不同的層次上,一個代表整體,一個代表部分。
4、關(guān)聯(lián)與聚合僅僅從 Java 或 C++ 語法上是無法分辨的,必須考察所涉及的類之間的邏輯關(guān)系。

public class 引擎{} public class 輪胎{} public class 汽車 {protected:引擎 engine;protected:輪胎 tyre[4]; }

表示方法:空心菱形頭

特征:屬于是關(guān)聯(lián)的特殊情況,體現(xiàn)部分-整體關(guān)系,是一種弱擁有關(guān)系;整體和部分可以有不一樣的生命周期;是一種弱關(guān)聯(lián);

1.1.4?????? 組合(Composition):帶實心菱形頭的實線表示

1、合成關(guān)系是關(guān)聯(lián)關(guān)系的一種,是比聚合關(guān)系還要強的關(guān)系。
2、它要求普通的聚合關(guān)系中代表整體的對象負責(zé)代表部分的對象的生命周期。

class 肢{}class 人{protected: 肢 limb[4];}

表示方法:一般是實心菱形加實線箭頭表示

特征:屬于是關(guān)聯(lián)的特殊情況,也體現(xiàn)了體現(xiàn)部分-整體關(guān)系,是一種強“擁有關(guān)系”;整體與部分有相同的生命周期,是一種強關(guān)聯(lián);

1.1.5?????? 泛化(Generalization):

帶空心箭頭的實線線表示

泛化(下圖)表示一個更泛化的元素和一個更具體的元素之間的關(guān)系。泛化是用于對繼承進行建模的UML元素。在Java中,用extends關(guān)鍵字來直接表示這種關(guān)系。

泛化關(guān)系表示類與類之間的繼承關(guān)系,接口與接口之間的繼承關(guān)系。如下圖:

1.1.6?????? 實現(xiàn)(Realization):空心箭頭和虛線表示

實例(I)關(guān)系指定兩個實體之間的一個合同。換言之,一個實體定義一個合同,而另一個實體保證履行該合同。對Java應(yīng)用程序進行建模時,實現(xiàn)關(guān)系可直接用implements關(guān)鍵字來表示。表達一種說明元素與實現(xiàn)元素之間的關(guān)系;

圖I

?

二、相互之間的區(qū)別

1.聚合與組合

(1)聚合與組合都是一種結(jié)合關(guān)系,只是額外具有整體-部分的意涵。

(2)部件的生命周期不同

聚合關(guān)系中,整件不會擁有部件的生命周期,所以整件刪除時,部件不會被刪除。再者,多個整件可以共享同一個部件。?
組合關(guān)系中,整件擁有部件的生命周期,所以整件刪除時,部件一定會跟著刪除。而且,多個整件不可以同時間共享同一個部件。

(3)聚合關(guān)系是“has-a”關(guān)系,組合關(guān)系是“contains-a”關(guān)系。

  • “弱”包含表示如果部門沒有了,員工也可以繼續(xù)存在;
  • “強”包含表示如果部門沒有了,員工也不再存在;

在做軟件需求時,往往會將所有的包含關(guān)系畫成“弱”包含,后面發(fā)現(xiàn)某些關(guān)系可以表示為“強”包含是,才轉(zhuǎn)為實心菱形。

2.關(guān)聯(lián)和聚合

(1)表現(xiàn)在代碼層面,和關(guān)聯(lián)關(guān)系是一致的,只能從語義級別來區(qū)分。

(2)關(guān)聯(lián)和聚合的區(qū)別主要在語義上,關(guān)聯(lián)的兩個對象之間一般是平等的,例如你是我的朋友,聚合則一般不是平等的。

(3)關(guān)聯(lián)是一種結(jié)構(gòu)化的關(guān)系,指一種對象和另一種對象有聯(lián)系。

(4)關(guān)聯(lián)和聚合是視問題域而定的,例如在關(guān)心汽車的領(lǐng)域里,輪胎是一定要組合在汽車類中的,因為它離開了汽車就沒有意義了。但是在賣輪胎的店鋪業(yè)務(wù)里,就算輪胎離開了汽車,它也是有意義的,這就可以用聚合了。

3.關(guān)聯(lián)和依賴

(1)關(guān)聯(lián)關(guān)系中,體現(xiàn)的是兩個類、或者類與接口之間語義級別的一種強依賴關(guān)系,比如我和我的朋友;這種關(guān)系比依賴更強、不存在依賴關(guān)系的偶然性、關(guān)系也不是臨時性的,一般是長期性的,而且雙方的關(guān)系一般是平等的。

(2)依賴關(guān)系中,可以簡單的理解,就是一個類A使用到了另一個類B,而這種使用關(guān)系是具有偶然性的、臨時性的、非常弱的,但是B類的變化會影響到A。

4.泛化和實現(xiàn)

實現(xiàn)表示類對接口的實現(xiàn)關(guān)系,表示方式:用一條帶有空心三角箭頭的虛線指向接口。

泛化表示類與類之間的繼承關(guān)系、接口與接口之間的繼承關(guān)系,表示方式一條帶有空心三角箭頭的實線指向基類(父接口)。

5.綜合比較

  這幾種關(guān)系都是語義級別的,所以從代碼層面并不能完全區(qū)分各種關(guān)系;但總的來說,后幾種關(guān)系所表現(xiàn)的強弱程度依次為:

          組合>聚合>關(guān)聯(lián)>依賴

  其中依賴(Dependency)的關(guān)系最弱,而關(guān)聯(lián)(Association),聚合(Aggregation),組合(Composition)表示的關(guān)系依次增強。換言之關(guān)聯(lián),聚合,組合都是依賴關(guān)系的一種,聚合是表明對象之間的整體與部分關(guān)系的關(guān)聯(lián),而組合是表明整體與部分之間有相同生命周期關(guān)系的聚合。

而關(guān)聯(lián)與依賴的關(guān)系用一句話概括下來就是,依賴描述了對象之間的調(diào)用關(guān)系,而關(guān)聯(lián)描述了對象之間的結(jié)構(gòu)關(guān)系。

?

?

?

?

?

  • 泛化(Generalization)

    ? 【泛化關(guān)系】:是一種繼承關(guān)系,表示一般與特殊的關(guān)系,它指定了子類如何特化父類的所有特征和行為。例如:馬是動物的一種,即有馬的特性也有動物的共性。

    【箭頭指向】:帶三角箭頭的實線,箭頭指向父類

  • 2

    實現(xiàn)(Realization)

    ????????【實現(xiàn)關(guān)系】:是一種類與接口的關(guān)系,它表示不繼承結(jié)構(gòu)而只繼承行為,是類與接口之間最常見的關(guān)系。準確的說,類不是繼承(inherit)接口,而是實現(xiàn)(implement)接口。

    ????????【箭頭指向】:UML中用帶三角箭頭的虛線,箭頭指向接口

  • 3

    關(guān)聯(lián)(Association)

    ????????【關(guān)聯(lián)關(guān)系】:是一種擁有的關(guān)系,它使一個類知道另一個類的屬性和方法;如:老師與學(xué)生,丈夫與妻子關(guān)聯(lián)可以是雙向的,也可以是單向的。雙向的關(guān)聯(lián)可以有兩個箭頭或者沒有箭頭,單向的關(guān)聯(lián)有一個箭頭。

    ????????【代碼體現(xiàn)】:成員變量

    ????????【箭頭及指向】:單向關(guān)聯(lián)為帶普通箭頭的實心線,箭頭指向被擁有者,如下圖

    圖中,老師與學(xué)生是雙向關(guān)聯(lián),老師有多名學(xué)生,學(xué)生也可能有多名老師。但學(xué)生與某課程間的關(guān)系為單向關(guān)聯(lián),一名學(xué)生可能要上多門課程,課程是個抽象的東西他不擁有學(xué)生。?

  • 4

    聚合(Aggregation)

    ????????【聚合關(guān)系】:是整體與部分的關(guān)系,且部分可以離開整體而單獨存在。如車和輪胎是整體和部分的關(guān)系,輪胎離開車仍然可以存在。

    ????????聚合關(guān)系是關(guān)聯(lián)關(guān)系的一種,是強的關(guān)聯(lián)關(guān)系;關(guān)聯(lián)和聚合在語法上無法區(qū)分,必須考察具體的邏輯關(guān)系。

    ????????【代碼體現(xiàn)】:成員變量

    ????????【箭頭及指向】:帶空心菱形的實心線,菱形指向整體

  • 5

    組合(Composition)

    ????????【組合關(guān)系】:是整體與部分的關(guān)系,但部分不能離開整體而單獨存在。如線段和點是整體和部分的關(guān)系,沒有點就不存在線段。

    ???????組合關(guān)系是關(guān)聯(lián)關(guān)系的一種,是比聚合關(guān)系還要強的關(guān)系,它要求普通的聚合關(guān)系中代表整體的對象負責(zé)代表部分的對象的生命周期。

    【代碼體現(xiàn)】:成員變量

    【箭頭及指向】:帶實心菱形的實線,菱形指向整體

  • 6

    依賴(Dependency)

    ????????【依賴關(guān)系】:是一種使用的關(guān)系,即一個類的實現(xiàn)需要另一個類的協(xié)助,所以要盡量不使用雙向的互相依賴.

    ?????【依賴擴展】:Trufun Plato工具根據(jù)實際開發(fā)中的需要,在工具箱還提供兩個預(yù)定義的依賴:許可(permission)依賴和使用(usage)依賴。

    l?許可依賴(通常作為特定的構(gòu)造類型)將包或者類與另一個允許它使用某些內(nèi)容的包或者類相連。許可依賴關(guān)系的構(gòu)造類型有訪問、友元、輸入。

    l?使用依賴關(guān)系(關(guān)鍵字《use》)將客戶元素與服務(wù)者元素相連。服務(wù)者的變化將導(dǎo)致客戶的變化。使用通常表示一種實現(xiàn)的依賴關(guān)系,其中的一個元素依靠另一個元素的服務(wù)來實現(xiàn)自身的操作。使用的構(gòu)造類型包括調(diào)用、實例(關(guān)鍵字《instantiate》)、參數(shù)、發(fā)送。

    ????????【代碼表現(xiàn)】:局部變量、方法的參數(shù)或者對靜態(tài)方法的調(diào)用

    ????????【箭頭及指向】:帶箭頭的虛線,指向被使用者

  • 7

    各種關(guān)系的強弱順序:

    ????????泛化?=?實現(xiàn)?>?組合?>?聚合?>?關(guān)聯(lián)?>?依賴?

    ????????下面這張UML圖,比較形象地展示了各種類圖關(guān)系:

  • 8

    如有不完善之處,希望大家多多補充,讓我們的學(xué)習(xí)互助起來。讓我們的經(jīng)驗分享起來

  • 總結(jié)

    以上是生活随笔為你收集整理的UML之用例图(use case)箭头方向的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。